Показать сообщение отдельно

  #13  
Старый 20.11.2008, 23:57
200 OK
Новичок
Регистрация: 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..
 
Ответить с цитированием