高分求解WINSOCK问题,帮顶有分,急
我用了一个WINSOCK控件
一个定时器
定时器时间间隔现设为10秒
定时器启动一个循环
在一个循环中,
根据列表中的对象中存储的IP和端口 打开一个连接,
connect
然后发送数据 senddata
然后 doenvents
然后接收数据 getdata
在局域网环境中测试非常正常,每个服务器都收到了发送来的信息
并将发送来的信息处理完返回了
客户端也显示接收到数据
但放到实际工作的网络中就怎么也不行,显示服务器没有收到任何东西
我发现在实际工作的网络中
PING服务器没有问题,但,数据延时为500多毫秒
而且我在发送前,让WINSOCK报一状态
结果从MSGBOX中看到 WINSOCK.state=6 也就是CONNECTIng
我想是不是因为网络延时太长,
请问如何解决此问题
[解决办法]
do until WINSOCK.state <> 7
doevents
loop
然后再发送信息
[解决办法]
顶
[解决办法]
senddate 数据以后+doevents
[解决办法]
可以用两个时钟来做相互束缚
一个用于你的目的
另一个监视是否服务器有收到消息回复
若没有便启动地一个时钟
还可以做一个缓冲区 把网络中接受到的数据缓存起来 服务器从缓冲区中读数据
[解决办法]
对
winsock程序一般都是事件触发的模式 不要采用时钟的模式
[解决办法]
这个问题主要是连接的问题,你尚未成功连接.
首先要确认你所连接的目标服务器是允许你访问的
先不要定时循环,用单次连接进行试验,看能否成功连接,多久能连上.只要能连接上,发送不会有问题的
再就是你不用事件模式而用定时器循环是不应提倡的,你也许有你的特殊情况.
[解决办法]
我做的是客户端两个winsock 服务器也用了两个
client端一个用于在加载窗体时获取服务器ip 并将之传给第二个winsock
第一个有的是udp 第二个是tcp
[解决办法]
我觉得是延迟问题,网络不是很顺畅吧
想不要定时发送消息,或则用一个很大的时间基数来看看,是否能正常接受数据!
然后再判断是什么问题?