关于socket的问题(100分)

  • 主题发起人 主题发起人 rating
  • 开始时间 开始时间
R

rating

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个form上放了一个delphi5自带的TClientSocket控件,然后在一个按扭的click的
事件中激活TClientSocket(ClientSocket1.active := true),然后向服务端发送数据
(使用socket.sendtext发送数据)。当按下按扭时服务端无法立刻马上收到数据,但是
再次按下按扭时服务端才收到数据。但是当我把ClientSocket1.active := true代码放在
form的create的事件中是就不会有这种事情发生。
请问如何才能在按一下按扭时就可以把数据发送出去(ClientSocket1.active := true和
数据发送都必须在按扭的click事件中)
 
因该不会吧,你把相关的代码贴出了看看
 
SOCKET的连接时费时的I/O操作,连接是需要时间的,应该在发送时判断是否连接成功再
发送。如你所说,应该是发送也不成功,不信你可以对函数的返回值进行判断。
 
我也碰到过类似问题,那时一个木马系统,需要连接后马上发回信息,我是这么解决的

ClientSocket1.active := true;
sleep(1000);
socket.sendtext('cool');
 
在设置active的属性前,已经对服务方进行了连接测试,测试成功后在设置active属性然后
发送数据
 
我印象中TClientSocket控件是非阻塞通讯方式,使用它的方法最好用线程,比较复杂
用Indy控件编程代码最简单
 
"在设置active的属性前,已经对服务方进行了连接测试,测试成功后在设置active属性然后
发送数据"
只能说明服务器是可连通,不是说你一设置ACTIVE[立即!!!!]就能连通。。。。
 
接受答案
 
后退
顶部