G gsw Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-03 #1 近来做个东东,对方用的是ClientSocket,我用的是IdTCPServer,两个控件能连接成功,但ClientSocekt发送数据,IdTCPServer1收不到,谁能帮一下!
Z zywcd Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-03 #6 建议你使用TcpServer1. 我曾经使用TcpServer1和另外的软件通讯。和你的应用相似。另外,需要看另外的软件对信息流是不是使用了其他的处理。 还有,你怎么判断连接成功了?
G gsw Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-04 #7 to zywcd 在连接事件中能知道连接成功了,就是服务端读不到客户端.后来用readstring(len),能读到,但读的是len这个长度的字符串,多了少了都不行.
Z zywcd Unregistered / Unconfirmed GUEST, unregistred user! 2006-08-04 #8 对方是使用什么软件开发的? 我上次一个软件,对方使用vc写的,把发送的字符串进行了序列化处理, 最后没法,使用delphi仿照vc也做了一个序列化,才成功进行了信息交换。 如果需要序列化,这段代码供你参考 //模拟VC的序列化过程. //同时返回应该发出去的命令串字节长度. function Serialize(var pp:array of char):integer; var i:integer; length:integer; sum:Longword; noInteger; begin no:=@pp[0]; //命令串前四个字符为长度. length:=no^; //获取长度. //计算校验码,...但是不包括表示长度的4个字节。 sum:=0; for i:=sizeof(integer)+1 to length+sizeof(integer) do sum:=sum+ord(pp[i-1]); no:=@pp[length+sizeof(integer)]; //存储校验码的位置地址.... no^:=sum; //把校验码存入字符串, Serialize:=length+sizeof(integer)*2; //包括长度的个字节,以及校验码4个字节的命令串长度. end;
对方是使用什么软件开发的? 我上次一个软件,对方使用vc写的,把发送的字符串进行了序列化处理, 最后没法,使用delphi仿照vc也做了一个序列化,才成功进行了信息交换。 如果需要序列化,这段代码供你参考 //模拟VC的序列化过程. //同时返回应该发出去的命令串字节长度. function Serialize(var pp:array of char):integer; var i:integer; length:integer; sum:Longword; noInteger; begin no:=@pp[0]; //命令串前四个字符为长度. length:=no^; //获取长度. //计算校验码,...但是不包括表示长度的4个字节。 sum:=0; for i:=sizeof(integer)+1 to length+sizeof(integer) do sum:=sum+ord(pp[i-1]); no:=@pp[length+sizeof(integer)]; //存储校验码的位置地址.... no^:=sum; //把校验码存入字符串, Serialize:=length+sizeof(integer)*2; //包括长度的个字节,以及校验码4个字节的命令串长度. end;