问题描述
JavaSocket通信我也是最近才开始接触,写的是跟一种光纤测量设备通信的代码。总体代码很简单,主要是规则略微复杂(厂家的定的规则,代码现在公司如果需要我明天发出来),反正最后拼接成一个byte数组发送给设备也就OK了,但问题来了。我发的命令是一个给设备校时的命令,就是把设备里的时间改成计算机当前的时间。现在情况是我只发送一次的话设备时间没有改变,但我如果写一个死循环,就是while(true){...}那种,不停发送,就可以改变设备时间,但具体是第几次改变的也是不定的。这让我很头疼也没头绪,现在来看,只发送一次命令的话是无法让设备顺利接收到的,但如果循环不停发送的话,就可能有某一次机会发送成功。烦请大家帮我分析一下,这种属于什么情况,我实在不解。先谢过了。
解决方案
解决方案二:
whiletrue{}里的逻辑简单,在一毫秒内就完成了,如果想区分时间,可以在每次发送完Socket后,增加sleep操作。
解决方案三:
引用1楼oh_Maxy的回复:
whiletrue{}里的逻辑简单,在一毫秒内就完成了,如果想区分时间,可以在每次发送完Socket后,增加sleep操作。
谢谢斑竹的回复,sleep我试过,但我主要想知道为什么要发送N多次才能成功。
解决方案四:
你发到服务端,那边收到消息有没有回执呢?这个要看看服务端接收消息的处理了
时间: 2024-08-24 15:08:51