Java中如何向套接字发送多个对象
有人能建议如何通过套接字将多个java序列化对象发送到服务器吗?Java中如何向套接字发送多个对象,java,sockets,client-server,Java,Sockets,Client Server,有人能建议如何通过套接字将多个java序列化对象发送到服务器吗? 当前,我的服务器总是只获取第一个对象 客户端: public void communicate() throws UnknownHostException, IOException { carClientSocket = new Socket("localhost", 4444); carClientOR = new ObjectOutputStream(carClientSocket.getOutputStrea
当前,我的服务器总是只获取第一个对象 客户端:
public void communicate() throws UnknownHostException, IOException {
carClientSocket = new Socket("localhost", 4444);
carClientOR = new ObjectOutputStream(carClientSocket.getOutputStream());
Car[] CarList = new Car[11];
for ( int i = 1; i <=10; i++ ) {
//Car alpha;
CarList[i] = new Car("Alpha Romeo","GTI",1999+i);
}
for ( int i =1; i<= 10; i++) {
carClientOR.writeObject(CarList[i]);
carClientOR.flush();
//carClientOR.reset();
}
carClientSocket.close();
}
问题出在服务器端,原因是调用
carSocket=CarServerSocket.accept()代码>在循环中。应该在循环之前完成一次,然后获得其他对象:
carSocket = CarServerSocket.accept();
while (true) {
System.out.println("Server Connected");
carServerIR = new ObjectInputStream(carSocket.getInputStream());
Car alpha1 = (Car) carServerIR.readObject();
System.out.println("Object received from car clinet: " + alpha1.getCarBrad() + " " + alpha1.getCarModel() + " " + alpha1.getCarYear());
}
是 啊那是因为你只看了一次。。。你需要一个循环来阅读<代码>while((object=input.readObject())!=null)
这只是你应该如何做的一个模板!在服务器端完美地使用for循环。我要试试这个主意。。谢谢!没有问题,只要确保在客户端,当您想要结束读取时,您需要输出。writeObject(null)
,这样循环就会启动谢谢,但当它尝试该解决方案时,我遇到了一个异常。将accept()移到循环外部将导致只有一个客户端能够连接到服务器端。我怀疑这是一种可取的行为。
carSocket = CarServerSocket.accept();
while (true) {
System.out.println("Server Connected");
carServerIR = new ObjectInputStream(carSocket.getInputStream());
Car alpha1 = (Car) carServerIR.readObject();
System.out.println("Object received from car clinet: " + alpha1.getCarBrad() + " " + alpha1.getCarModel() + " " + alpha1.getCarYear());
}