socket通信,服务端过了一段时间就接收不到数据了

a65568641 2018-07-06 04:47:34
public class InOutDataService implements InitializingBean, Runnable {
@Autowired
SysIOMapper sysIOMapper;
private Logger logger = Logger.getLogger(this.getClass());

private static final int PORT = 10101;
private static ServerSocket serverSocket;
private static boolean isStartServer = false;
private static Socket client;
private static BufferedReader reader;

@Override
public void afterPropertiesSet() throws Exception {
new Thread(this).start();
}

@Override
public void run() {
while(true) {
System.out.println("------------------- start now ------------------" + DateUtils.getDateStr(DateUtils.DATETIMESHOWFORMAT));
try {
serverSocket = new ServerSocket(PORT);
client = serverSocket.accept();
} catch(IOException e) {
e.printStackTrace();
}
isStartServer = true;
while(isStartServer) {
try {
List<PlcIOData> list = null;
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
String msg = reader.readLine();
if(msg != null) {
System.out.println(msg);
String msg1;
//这段代码处理消息
}
//Thread.sleep(10000);
} catch(Exception e) {
logger.error(e.getMessage());
try {
reader.close();
client.close();
serverSocket.close();
isStartServer = false;
Thread.sleep(1000);
} catch(IOException | InterruptedException e1) {
logger.error(e.getMessage());
e1.printStackTrace();
}
logger.error(e.getMessage());
e.printStackTrace();
}
}
}
}
}
...全文
1770 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForOurLive-洪 2020-01-08
  • 打赏
  • 举报
回复
楼主问题解决了吗,今天也遇到类似的情况
jack__ming 2019-12-01
  • 打赏
  • 举报
回复
您好 我现在也遇到了这个问题 客户端突然收不到消息但是连接显示正常,目前有发现原因和解决方案吗?
jack__ming 2019-12-01
  • 打赏
  • 举报
回复
引用 13 楼 liuyangtest12138 的回复:
您好 我现在也遇到了这个问题 客户端突然收不到消息但是连接显示正常,目前有发现原因和解决方案吗?
请问 解决了么 是什么原因导致的 我现在也遇到同样的问题 谢谢!!!
liuyangtest12138 2019-09-26
  • 打赏
  • 举报
回复
您好 我现在也遇到了这个问题 客户端突然收不到消息但是连接显示正常,目前有发现原因和解决方案吗?
ambit_tsai-微信 2018-07-10
  • 打赏
  • 举报
回复
引用 5 楼 a65568641的回复:
[quote=引用 3 楼 ambit_tsai 的回复:]
给你提供一个可能,供参考。
有网络中存在防火墙、Anti-DDOS、WAF等安全防护设备,如果它对长链接有限制的话,可能会强制结束掉。

客户端是10秒发一次给我,这种限制是超时限制吗[/quote] 链接建立过长,超过安全设备允许的时长,就可能被强制中断。
a65568641 2018-07-10
  • 打赏
  • 举报
回复
引用 3 楼 ambit_tsai 的回复:
给你提供一个可能,供参考。
有网络中存在防火墙、Anti-DDOS、WAF等安全防护设备,如果它对长链接有限制的话,可能会强制结束掉。

客户端是10秒发一次给我,这种限制是超时限制吗
a65568641 2018-07-10
  • 打赏
  • 举报
回复
引用 2 楼 u012804915 的回复:
没弄过,是不是握手中断了,可以再次连接吗

我只要重启程序就马上又有数据了
ambit_tsai-微信 2018-07-07
  • 打赏
  • 举报
回复
给你提供一个可能,供参考。
有网络中存在防火墙、Anti-DDOS、WAF等安全防护设备,如果它对长链接有限制的话,可能会强制结束掉。
晓阳陌 2018-07-07
  • 打赏
  • 举报
回复
没弄过,是不是握手中断了,可以再次连接吗
a65568641 2018-07-06
  • 打赏
  • 举报
回复
就是,服务程序是接收数据的,然后大概1天左右都是正常的,突然一个时间点收不到数据了,是否是代码有问题,请各位大神赐教

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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