Socket编程,关于客户端连续发送消息的问题 本帖最后由 luo2pei4321 于 2010-06-11 16:55:29 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的服务器端,只读了一次,就回去accept了下面这段加个for循环5次if (socket != null) { ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); Object obj = ois.readObject(); System.out.println("Context: " + obj.toString()); } package com.xuz.csdn.worldcup;import java.io.IOException;import java.io.ObjectInputStream;import java.net.ServerSocket;import java.net.Socket;public class ServerTest { private ServerSocket serverSocket; private Socket socket; public ServerTest() { try { serverSocket = new ServerSocket(31313); socket = null; } catch (IOException ioe) { ioe.printStackTrace(); } } private void start() { try { System.out.println("Server start..."); while (true) { socket = serverSocket.accept(); if (socket != null) { ObjectInputStream ois = new ObjectInputStream(socket .getInputStream()); Object obj; while (true) { obj = ois.readObject(); if (obj.toString().equals("quit")) { break; } System.out.println("Context: " + obj.toString()); } ois.close(); } } } catch (Exception e) { e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { ServerTest serverTest = new ServerTest(); serverTest.start(); }}package com.xuz.csdn.worldcup;import java.io.IOException;import java.io.ObjectOutputStream;import java.net.Socket;import java.net.UnknownHostException;public class ClientTest { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 31313); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); for (int i = 0; i < 5; i++) { System.out.println(i); oos.writeObject("123"); oos.flush(); } oos.writeObject("quit"); oos.flush(); oos.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }}次数限制不靠谱。server死循环等待client的退出标志。 服务器accept后应该启动一个线程来读取客户端发送来的数据并处理,而不是在单线程下处理,否则2个并发都扛不住! 顶楼上,不久前也做了一个,不过是界面的,发的一个写在send的button中,接的一个写在主程序中。 我们爱分享 一个下载网页中css图片的 java源码 俄罗斯方块的整行消除该怎样写 用java编写这样的输出 始终循环不出 如何使用drawImage在JFrame中显示一张本地图片 小小问题,过路人请进! 能够指出我程序错误的给100分!其他的不给分! 高分求一个小程序! 怎样作出自己的DLL? 关闭窗口???? 如何打开cloudview java Applet 小程序 的图片无法在网页上显示 一个小问题...请各位来解答...
下面这段加个for循环5次
if (socket != null) { ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
Object obj = ois.readObject(); System.out.println("Context: " + obj.toString());
}
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;public class ServerTest { private ServerSocket serverSocket;
private Socket socket; public ServerTest() {
try {
serverSocket = new ServerSocket(31313);
socket = null;
} catch (IOException ioe) {
ioe.printStackTrace();
}
} private void start() { try { System.out.println("Server start..."); while (true) { socket = serverSocket.accept(); if (socket != null) { ObjectInputStream ois = new ObjectInputStream(socket
.getInputStream()); Object obj;
while (true) {
obj = ois.readObject();
if (obj.toString().equals("quit")) {
break;
}
System.out.println("Context: " + obj.toString());
} ois.close();
}
} } catch (Exception e) {
e.printStackTrace();
}
} /**
* @param args
*/
public static void main(String[] args) {
ServerTest serverTest = new ServerTest();
serverTest.start();
}}package com.xuz.csdn.worldcup;import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;public class ClientTest { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 31313); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); for (int i = 0; i < 5; i++) {
System.out.println(i);
oos.writeObject("123");
oos.flush();
}
oos.writeObject("quit");
oos.flush();
oos.close(); } catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
次数限制不靠谱。server死循环等待client的退出标志。