新手C# TcpListener监听问题

程序猿东东 2015-09-23 10:18:19
我使用TcpListener和TcpClient做了一个光伏电站远程监控程序,刚开启程序时没有任何问题,可以正常发送命令,返回数据,但是程序运行七八个小时后,我发现程序可以正常监听到电站在线,发送命令后无法返回正常数据,只能返回FE设备心跳包,但是我把程序关闭后再重新启动,又可以继续接收到正常数据,请问这个原因是怎么造成的?tcpclient每次连接接收数据后都已正常关闭。
还有个小问题,有时我发送命令后,发现心跳包会合正常数据一起返回,心跳包在正常数据前面,比如:FE 01 02 03,FE是心跳包,01 02 03是正常数据,请问有大神能帮我解答一下嘛?
...全文
415 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
估计是你的这个系统实际上没有什么人在用、即使在用也基本上没有什么功能、很长时间(例如几秒钟)才有一次通讯,加之你不做必要的测试就上线,所以会出现问题。 最简单的解决办法,就是改为短链接的。因为你这个系统没有什么性能要求,人性一点,用低效率来换取稳定性,用户其实看不出来毛病。
  • 打赏
  • 举报
回复
引用 楼主 jzxa2csdongdong 的回复:
还有个小问题,有时我发送命令后,发现心跳包会合正常数据一起返回,心跳包在正常数据前面,比如:FE 01 02 03,FE是心跳包,01 02 03是正常数据,请问有大神能帮我解答一下嘛?
看起来你连 tcp 流式处理的沾包、分包都没有考虑,也就是说连消息的识别都不利索,这怎么能保证通讯呢?
  • 打赏
  • 举报
回复
引用 楼主 jzxa2csdongdong 的回复:
还有个小问题,有时我发送命令后,发现心跳包会合正常数据一起返回,心跳包在正常数据前面,比如:FE 01 02 03,FE是心跳包,01 02 03是正常数据,请问有大神能帮我解答一下嘛?
看起来你连 tcp 流式处理的沾包、分包都没有考虑,也就是说连消息的识别都不利索,这怎么能保证通讯呢?
by_封爱 版主 2015-09-23
  • 打赏
  • 举报
回复
http://www.cnblogs.com/chenxizhang/archive/2011/09/10/2172994.html 我觉得应该是LZ的代码有问题 是同步 或者新建多个线程导致的吧
程序猿东东 2015-09-23
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
估计是你的这个系统实际上没有什么人在用、即使在用也基本上没有什么功能、很长时间(例如几秒钟)才有一次通讯,加之你不做必要的测试就上线,所以会出现问题。 最简单的解决办法,就是改为短链接的。因为你这个系统没有什么性能要求,人性一点,用低效率来换取稳定性,用户其实看不出来毛病。
谢谢你的回答,因为我是新手,做出来的东西可能各种问题,我会加强学习的。
程序猿东东 2015-09-23
  • 打赏
  • 举报
回复
引用 1 楼 diaodiaop 的回复:
http://www.cnblogs.com/chenxizhang/archive/2011/09/10/2172994.html 我觉得应该是LZ的代码有问题 是同步 或者新建多个线程导致的吧
谢谢,我再学习学习。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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