Delphi IdTcpServer做服务器程序,VB 用winsock开发客户端.
但VB发来的数据(普通字符串)IdTcpServer捕获不到.全部代码如下:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  IdTCPServer1.DefaultPort:=50002; 
  IdTCPServer1.Active:=True; 
end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
  IdTCPServer1.Active:=False; 
end; procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); 
var 
  recvStr:String; 
begin 
  if not AThread.Terminated and AThread.Connection.Connected then 
  begin 
    recvStr:=AThread.Connection.ReadLn(); 
    showmessage(recvStr); 
  End; 
end; 
end.
////////////////////////////
VB用的winsock.senddata 'TestString'
//////////////////
Delphi的IdTcpserver接收不到数据,如果用IdTcpClient发送,则可以.
将程序换台机器运行,效果一样.
用了一个基于socket写的通用侦听测试程序,能正常接收vb 发送的字符串.
难道VB的Winsock与Delphi的IdTcpServer不兼容吗?

解决方案 »

  1.   

    no one can help me?
      

  2.   

    在 IdTCPServer的onConnect 事件中设断点,看一下。连接时,应该有个建立连接的机制,
    你不是有一个能连接成功能,对端口监控一下,看一下这个能连接通的在建立 连接时,给VB所写的程序回传了什么字节。然后 你可以在在 IdTCPServer的onConnect 事件 给其 回传相同的信息就可以了。
      

  3.   

    不要使用readln,如果确实需要那在VB的发送程序当中,在数据的后面添加一个vbCRLF(换行符)