一个奇怪的Socket通信问题:ServerSocket一直在监听,但是accept来的新Socket却总是不能读取信息!?!?!? 另外,补充一下:所有的server-side socket第一句都是调用eapo.Utils.ReadLine读信息。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想你应该在客户端调用java.net.Socket.setSoLinger(true, delaytime)否则客户端socket Close后,所有没发出去的数据都被扔掉 客户端与服务器端都要检查服务器端(可能原因): 服务器端最好用多线程来处理连接请求,根据您的描述,我猜服务器端处理有可能也有问题.客户端: Software caused connection abort: recv failed,客户端的原因会大点,您仔细检查下(个人建议,仅供参考) 楼主最好能把两个Socket的程序传上来! 这个问题其实很明显是你的服务器端没有用循环来接受客户端的请求给你段代码看看public void startService() { try { server=new ServerSocket(this.port); System.out.println("Server Start Successfully\n"); while(true) { Socket client=server.accept(); System.out.println("Accept Client Query\n"); DataInputStream in=new DataInputStream(client.getInputStream()); DataOutputStream out=new DataOutputStream(client.getOutputStream()); // Thread.sleep(1500); StringBuffer sb=new StringBuffer(new Date().toString()); sb.append(" "); sb.append(in.readUTF()); // in.close(); System.out.println("Read data from client successfully\n"); out.writeUTF(sb.toString()); // out.flush(); // out.close(); System.out.println("Write data to client successfully\n"); } } catch (Exception e) { System.out.println(e.toString()); System.out.println("Server work failed\n"); stopService(); } } 问题解决了,是服务器短多线程同时读取一个socket,逻辑设计错误,赫赫,不好意思。谢谢各位帮助!007remember(绿原) 兄弟,给你11分,祝你升级愉快:P 关于vi编辑器问题 怎么实现SWT窗口间的数据交流? 如何自己的代碼中使用netbeans下那個顯示數據庫查詢結果的表格組件 怎么显示画板上的直线?在线等,急用 如何用swt在它的Browser中画图? 如何获取当前程序文件的路径 游戏中,飞机发射子弹应该怎么实现? 散分啦!! 我在sql语句中使用了中文怎么就查不到记录呢,兄弟姐妹们帮我看看那 高分求一个现在常用的JAVA编译器及运行平台。 高手大会诊,新人在这里拜了 关于布局管理器的问题。 IBM笔试题
java.net.Socket.setSoLinger(true, delaytime)
否则客户端socket Close后,所有没发出去的数据都被扔掉
服务器端(可能原因):
服务器端最好用多线程来处理连接请求,根据您的描述,我猜服务器端处理有可能也有问题.客户端:
Software caused connection abort: recv failed,客户端的原因会大点,您仔细检查下
(个人建议,仅供参考)
是你的服务器端没有用循环来接受客户端的请求
给你段代码看看
public void startService() {
try {
server=new ServerSocket(this.port);
System.out.println("Server Start Successfully\n");
while(true) {
Socket client=server.accept();
System.out.println("Accept Client Query\n");
DataInputStream in=new DataInputStream(client.getInputStream());
DataOutputStream out=new DataOutputStream(client.getOutputStream());
// Thread.sleep(1500);
StringBuffer sb=new StringBuffer(new Date().toString());
sb.append(" ");
sb.append(in.readUTF());
// in.close();
System.out.println("Read data from client successfully\n");
out.writeUTF(sb.toString());
// out.flush();
// out.close();
System.out.println("Write data to client successfully\n");
}
} catch (Exception e) {
System.out.println(e.toString());
System.out.println("Server work failed\n");
stopService();
}
}
谢谢各位帮助!007remember(绿原) 兄弟,给你11分,祝你升级愉快:P