socket 服务端 长连接问题 socket服务器java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你应该在服务端的处理线程中,通过while(true)去接收消息,你直接在线程的构造函数中接收了消息(实际上这时候还是在主线程运行的),并且立即将socket关闭了,所以你这里开启线程一点意义都没有。socket都关闭了,下次再发当然就不行了。至于你说的通一次断一次,依次循环,那应该是你的客户端对断了之后做了处理,就是接着下一次再重新连接。关键原因就是你的服务端收了一条消息之后就立即关闭了。 楼上说的对,具体代码(示意代码)可能是这样:while (running) { try { Socket socket = socketServer.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); String cmd = reader.readLine(); CmdCenter cc = new CmdCenter(socket,reader,cmd); cc.setDaemon(false); cc.start(); } catch (Exception e) { logger.error(e.getMessage()); } } 请牛人解答一下,关于初始化顺序 关于JXL输出Excel单元格换行问题! 端口被占用 8080 jar文件能加密吗?怎么保护自己的程序 求助,关于文本文件的分割,谢谢 新手求助 十万个为什莫之“关于接口的实现FilenameFilter接口” 谁有Borland JBuilder 8 Enterprise Trial的注册码? 请教:为什么不能编译? 为什么多态的情况下,子父类存在同名的非静态函数的时候,默认是调用子类的成员函数. CharacterStringConverter这个类为什么import不了 线程启动等待问题
至于你说的通一次断一次,依次循环,那应该是你的客户端对断了之后做了处理,就是接着下一次再重新连接。关键原因就是你的服务端收了一条消息之后就立即关闭了。
try {
Socket socket = socketServer.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
String cmd = reader.readLine(); CmdCenter cc = new CmdCenter(socket,reader,cmd);
cc.setDaemon(false);
cc.start(); } catch (Exception e) {
logger.error(e.getMessage());
}
}