
20.11.2008, 23:57
|
|
Новичок
Регистрация: 20.11.2008
Сообщений: 7
С нами:
9196740
Репутация:
1
|
|
Как и обещал, выкладываю:
Сервер на php, использую стандартный пример из мануала, при коннекте с клиентом посылает ему сообщение string(39) "Hello! The time is 11/20/2008 10:29 pm " такого вида, + если клиент что то отправляет, то string(23) "You have sent : тут echo клиента "
PHP код:
<?php
$master = array();
$socket = stream_socket_server("tcp://localhost:10001", $errno, $errstr);
if (!$socket) {
echo "$errstr ($errno)<br />\n";
} else {
$master[] = $socket;
$read = $master;
while (1) {
$read = $master;
$mod_fd = stream_select($read, $_w = NULL, $_e = NULL, 5);
if ($mod_fd === FALSE) {
break;
}
for ($i = 0; $i < $mod_fd; ++$i) {
if ($read[$i] === $socket) {
$conn = stream_socket_accept($socket);
fwrite($conn, "Hello! The time is ".date("n/j/Y g:i a")."\n");
$master[] = $conn;
} else {
$sock_data = fread($read[$i], 1024);
var_dump($sock_data);
if (strlen($sock_data) === 0) { // connection closed
$key_to_del = array_search($read[$i], $master, TRUE);
fclose($read[$i]);
unset($master[$key_to_del]);
} else if ($sock_data === FALSE) {
echo "Something bad happened";
$key_to_del = array_search($read[$i], $master, TRUE);
unset($master[$key_to_del]);
} else {
echo "The client has sent :"; var_dump($sock_data);
fwrite($read[$i], "You have sent :[".$sock_data."]\n");
fclose($read[$i]);
unset($master[array_search($read[$i], $master)]);
}
}
}
}
}
?>
Далее часть на дельфах
Создаю форму с елементами Button1, Memo1, компонентами IdTCPClient1, и IdThreadComponent1(чтоб не виснула прога создаем отдельный поток.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdThreadComponent, StdCtrls, IdComponent,
IdTCPConnection, IdTCPClient;
type
TForm1 = class(TForm)
Button1: TButton;
IdThreadComponent1: TIdThreadComponent;
IdTCPClient1: TIdTCPClient;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure IdThreadComponent1Run(Sender: TIdThreadComponent);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
IdThreadComponent1.Start;
end;
procedure TForm1.IdThreadComponent1Run(Sender: TIdThreadComponent);
begin
IdTCPClient1.Host:='92.63.110.20';
IdTCPClient1.Port:=10001;
IdTCPClient1.Connect;
IdTCPClient1.SendCmd('Heloo serv',Memo1.Text);
end;
end.
Тоисть после нажатия Button1, мы должны отправить сообщение Heloo serv, и получить в ответ в Memo1
Вместо радости получаю
Исключение класса EidException с сообщением ' Reply Code is not valid :Hel'.
Где Hel это по всей видимости ответ сервера "Hello! The t ......
Помогите йопт
p.s. порт будет открыт, пробуйте
Последний раз редактировалось 200 OK; 21.11.2008 в 00:19..
|
|
|