首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

高分求解WINSOCK有关问题,帮顶有分,

2012-01-11 
高分求解WINSOCK问题,帮顶有分,急我用了一个WINSOCK控件一个定时器定时器时间间隔现设为10秒定时器启动一

高分求解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
[解决办法]
我觉得是延迟问题,网络不是很顺畅吧
想不要定时发送消息,或则用一个很大的时间基数来看看,是否能正常接受数据!
然后再判断是什么问题?

热点排行