From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

TCP IP 通讯问题,请高手帮忙解答,谢谢

大家好,最近初学TCP编程,自己依据范例做了一个依靠服务名访问的随机端口多客户服务器和客户端。服务器管理多个客户端的连接和数据,客户端发送命令给服务端,由于只是为了验证,服务端仅仅将客服端的数据再发货客户端接收而已。

在本机运行时完全达到了我的预期要求。在解决了防火墙问题后通过网络也没问题,只是通过网络连接的时候建立连接的时间稍长些,不过连接成功后传送数据还是很快的,传送几百KB的数据也不需要等待多长的时间。各客户端数据独立不受干扰。

 

问题是,但我将客户端断开连接后再重新连接后可以收到服务器发送的欢迎信息,通过调试发现客户端发送的数据服务器都能收到而且也发送给客户端了,但是客服端却收不到数据。调试发现,客户端的接收循环一直在等待数据,可是服务器已经发送出数据了。如果说客户端重新连接后端口与服务器的信息不匹配了,那么为什么一开始却可以收到欢迎信息呢?

 

附件中是我的源码,希望高手能解答我的疑惑,更希望指出我源码中的缺陷,谢谢大家。

0 项奖励
1 条消息(共 4 条)
3,118 次查看

继续

下载全部
0 项奖励
2 条消息(共 4 条)
3,117 次查看

我不知道我的回答能不能帮上你的忙,但是可以肯定你的成绩确实写得很好。你很优秀。我测试了一下服务端的程序没有什么问题,有问题的,程序在于你的客户端。你可以尝试把客户端的程序读和写放在一个will循环里面。写的话可以用一个超时检测。到达毫秒级的时间以后,然后进行堵的操作。写的这一个操作,放在条件判断里面。这样的话,tc p的句柄引用过来以后优先判断条件超时之后执行后续的写操作,然后最后执行关闭TCP。这样问题应该就可以解决了。

0 项奖励
3 条消息(共 4 条)
1,704 次查看
我感觉你的想法很好,写的也比我厉害,但是你没有仔细排查问题,我找到你的原因了,其实是一个很简单的地方,那就是STOP按钮没有初始化,导致你按STOP停止后,STOP还是真,程序停止是因为你关闭引用,导致读数据报错了,所以下次启动程序的时候上面的循环只执行了一次
0 项奖励
4 条消息(共 4 条)
1,481 次查看