我用ServerSocket1.Socket.Connections[i].SendText(Edit1.text)给已经连接的clientsocket发送了文本消息,然后在Clientsocket1的Read事件里却得不到发送的消息~怎么解决啊~~谢谢~

解决方案 »

  1.   

    客户端:
    procedure TForm1.btnSendClick(Sender: TObject);
    Var
      len : Word;
      Msg : String;
      buf : array of char;
    begin //前两个字节存放消息体内容长度
      Msg := Trim(MemSendMsg.Text);
      Len := Length(Msg);
      SetLength(buf,Len + 2);
      Move(Len,buf[0],2);
      Move(Msg[1],buf[2],Len);
      ClientSocket.Socket.SendBuf(buf[0],Len + 2)
    end;
    服务端:
    procedure TForm1.btnSendClick(Sender: TObject);
    var
      i,len:word;
      msg:string;
      buf:array of char;
    begin
       msg:=Trim(MemSendMsg.Text);
       len:=length(msg);
       setlength(buf,len+2); //设置buf长度 //前两个字节存放消息体内容长度
       Move(len, buf[0], 2) ; //把消息体内容长度放入前两个字节
       Move(msg[1], buf[2], len);  //把消息体内容放入包中  从第三个字节开始存放
       if SockPool.Count < 1 then Exit;
       for i:=0 to  SockPool.Count -1 do
       try
         TCustomWinSocket(SockPool[i]).SendBuf(buf[0], len+2);
       except
         TCustomWinSocket(SockPool[i]).Close;
         SockPool.Remove(SockPool[i]);
       end;
    end;
      

  2.   

    delphi自己带的demos里有例子,参考一下
      

  3.   

    楼上的哥们  delphi自己带的demos里 
    ServerSocket1和ClientSocket1 我怎么没有找到呢
      

  4.   

    问题同楼主同,还没找到答案
    楼主的问题是:
    TcpServer向TcpClient发送消息,不触发OnRecieveln事件,楼上的是ClientSocket和ServerSocket,不同的。
    很奇怪,TcpClient向TcpServer通过Sendln方法没问题,反过来就不行了,接受不到,高手来说下怎么解决。