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

a65568641 2018-07-06 04:40:13
代码如下
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();
}
}
}
}
}
...全文
699 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
a65568641 2018-07-10
  • 打赏
  • 举报
回复
引用 2 楼 stacksoverflow 的回复:
几个客户端?目测你的程序超过一个客户端连接就会出问题。

还有把
移动到
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
的上面
while(isStartServer) {

改成这个样子
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
while(isStartServer) {

就是只给一个客户端用的,好的
stacksoverflow 2018-07-06
  • 打赏
  • 举报
回复
几个客户端?目测你的程序超过一个客户端连接就会出问题。

还有把
移动到
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
的上面
while(isStartServer) {

改成这个样子
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
while(isStartServer) {
a65568641 2018-07-06
  • 打赏
  • 举报
回复
就是,服务程序是接收数据的,然后大概1天左右都是正常的,突然一个时间点收不到数据了,是否是代码有问题,请各位大神赐教

81,095

社区成员

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

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