您尚未登录。

楼主 # 2021-09-13 09:11:47

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 639
积分: 612

tcp server软件点击“关闭”,但板子上好像没有关闭socket,这是为什么?

请教个问题,stm32f429+rtthread,板子作为tcp client连接pc端的tcp server.
程序里socket接收失败会关闭socket然后重新建立socket然后重连。

我一开始用的sscom串口助手这个软件,有tcp server功能。
里面有个“侦听”和“断开”两个按键。一旦点断开,socket就自动断了,板子程序能正常运行。再点击侦听,板子也能重新连上。
QQ图片20210913091015.png

后来用了正点原子的网络调试助手,但这个只有“连接”和“关闭”两个按钮。连接后正常,收发没问题的。
但是点击“断开”后,板子那里没有显示socket断开。然后软件上再次点击“连接”,则我板子仍通讯不上...
QQ图片20210913091015.pngQQ图片20210913091038.png

请教下,是这个软件有问题?还是我板子程序有问题?

离线

楼主 #1 2021-09-13 09:35:38

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 639
积分: 612

Re: tcp server软件点击“关闭”,但板子上好像没有关闭socket,这是为什么?

又试了几次这个软件。
连接后,收发正常。
点击“断开”后,如果板子不再继续发送,则再次点击“连接”,则板子能正常发送。
点击“断开”后,如果板子继续发送,则软件收到一帧后就接收不到了,再次点击“连接”,板子发送,软件也接收不到。

无论那种情况,点击“断开”后,板子调试接口都没有打印出socket连接失败这条信息。如果关闭软件,则会有socket连接失败这个信息,再次重新打开软件并点击“连接”,板子会自动重连上去。

离线

楼主 #2 2021-09-13 12:05:41

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 639
积分: 612

Re: tcp server软件点击“关闭”,但板子上好像没有关闭socket,这是为什么?

试了将select结果打印出来,结果一旦连接上后,如果再停止连接,select这里仍返回是0...

离线

楼主 #3 2021-09-13 16:40:53

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 639
积分: 612

Re: tcp server软件点击“关闭”,但板子上好像没有关闭socket,这是为什么?

经群里有朋友试验,双开正点原子这个软件,一个当tcp server,也给当tcp client。
我也这样测试了一遍,发现,双方建立连接后:

1   server点“停止”按钮后,再点“连接”,期间client有发送数据,则server再次连接后,client发送,server收不到。
     如果tcp server窗口关掉重开,或则tcp client ”停止“再”连接“,可以发送接收成功。

2   server点”停止“后,再点”连接“,期间client没有发送数据,则server再次”连接“后,client发送,server可以收到。

群里的朋友联系到了该软件制作者,说这版本软件是这样的:

写软件的人告诉我,他说他只断开了通讯,没有断开连接,

我没明白tcp server这个断开通讯是如何操作的?为何tcp client不知道server断开了?


软件制作者提供了最新版本的软件,双开该软件,一个做server,一个做client。
tcp server断开后,tcp client也会自动断开。

但是我用两个版本的软件交叉试验,无论哪个版本做server,另一个版本做client,server”关闭“后,client都不能自动断开...

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn