最近遇到的一个Java Socket通信的小问题

AslenG 2014-10-15 08:45:21
Java Socket通信我也是最近才开始接触,写的是跟一种光纤测量设备通信的代码。总体代码很简单,主要是规则略微复杂(厂家的定的规则,代码现在公司如果需要我明天发出来),反正最后拼接成一个byte数组发送给设备也就OK了,但问题来了。
我发的命令是一个给设备校时的命令,就是把设备里的时间改成计算机当前的时间。现在情况是我只发送一次的话设备时间没有改变,但我如果写一个死循环,就是while(true){...}那种,不停发送,就可以改变设备时间,但具体是第几次改变的也是不定的。这让我很头疼也没头绪,现在来看,只发送一次命令的话是无法让设备顺利接收到的,但如果循环不停发送的话,就可能有某一次机会发送成功。

烦请大家帮我分析一下,这种属于什么情况,我实在不解。先谢过了。
...全文
151 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Defonds 2014-10-16
  • 打赏
  • 举报
回复
你不会是用的 udp 吧 通信代码有没,方便的话贴一下
LOVE-漂泊 2014-10-16
  • 打赏
  • 举报
回复
表示真心不懂!
oarsman 2014-10-16
  • 打赏
  • 举报
回复
socket通信分为两种,像你这种情况,怀疑你是采用了UDP方式来进行通信。UDP协议的确会存在丢包的情况,尤其是网络不是很理想的情况,经常会有对方收不到的情况。 像这种情况,一般有两种解决办法,一,换用TCP通信方式,TCP是可靠的通信传输,可以保证对方能够收到消息。 二,采用有确认机制的UDP通信,即你向对方发送了UDP消息后,必须要求对方给你一个应答,告诉你他收到了。如果超过一定的时间没有应答,那么你需要再次发送消息,直到对方有应答位置。 如果既要采用UDP 又不给应答的话(客户经常会这么不讲道理),则从技术上无法保证消息的可靠性。只能是凭运气,成功就成功,不成功就是败了。或者通过加大发送次数保证对方能够收到,但是即便如此,仍然有失败的概率。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧