向远程计算机发送数据,为什么第一次需要发送两次,以后正常?(100分)

  • 主题发起人 主题发起人 朱华
  • 开始时间 开始时间

朱华

Unregistered / Unconfirmed
GUEST, unregistred user!
我建立一个客户端,与远程建立连接,程序如下:

begin
client1.open;
client1.socket.sendtext('message');
end;

ip地址,port,端口号已经设好。

第一次,发送时没有效果,第二次以后正常。

问为什么?
 
client open之后不一定立刻就连接上了,要在onConnected事件里面判断.
 
从网络的角度来讲,请求连接后得要有应答回音,这其中要有延时的。当然在第一次
发出请求后,还为得到应答信号,你的第二次连接请求就又发出了,此时,第一次的
应答信号才到,所以晚了半拍!估计是此道理。
 
有此问题
把连接和发送分开放在两个过程中实现就可以解决了。
 
做个延时在连结和发送之间:-)
 
不知道为什么,反正连着写就不对。
我以前也遇到过这种问题,放在两个
过程中就好了。不是要发送两次才行。
 
数据发送当然不能在open以后
要么是onread的时候,要么是在onconnected
 
在两条语句中加上application.Processmessage;让消息响应间隔。
 
紧跟着运行两次发送可能被接收端认为一次发送,通过消息间隔加以区别.
 
cAkk说的对,client open之后不一定立刻就连上了,这时发的数据对方当然收不到了。
 
是的,如果我没有猜错的话,你用的是TCP的连接方式,TCP连接的时候要进行三次握手的,也许你发第一次的时候恰好是握手时间内,所以不会收到如果你恰当的进行延时就可以一次发出去了
不过用UDP可以不用这些处理的,试试看,也许短距离用UDP更加的方便
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部