【发布时间】:2013-06-24 01:43:07
【问题描述】:
我正在尝试使用套接字发送一个对象,该对象将通过ObjectOutputStream 保存一些信息。当我调用方法Client_Handler(String auth, String user) 并发送对象时它工作正常,但是当我再次调用它时它不起作用。我希望能够使用连接多次发送包含不同数据的对象。
客户:
public void Client_Handler(String auth, String user){
try{
socket2 = new Socket(serverAddress, 8080);
User_Authorization us3 = new User_Authorization();
ObjectOutputStream out2 = new ObjectOutputStream(socket2.getOutputStream());
us3.set_name(user);
us3.set_authorization(auth);
out2.writeUnshared(us3);
}catch(Exception e){
JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
}
}
服务器:
public class Conn implements Runnable{
private Socket socket;
public static ServerSocket server ;
public void go(){
Thread r = new Thread(this);
try{
r.start();
}catch(Exception e){
JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
}
}
@Override
public void run() {
try{
server = new ServerSocket(8080);
socket = server.accept();
while(true){
Login.User_Authorization us = null;
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
us = (Login.User_Authorization) in.readObject();
System.out.println(us.get_name()+ "he's " +us.get_authorization());
}
}catch(Exception e){JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);}
}
【问题讨论】:
-
定义“不起作用”。
-
再次执行时,没有输出显示,就好像它没有得到任何输入一样。有时它会给我一个 EOFException,但不是每次都给我,这有点奇怪。
-
我的意思是,每次调用
Client_handler时,您都会创建一个新的Socket... 一旦调用该方法,前一个方法就消失了。它将被垃圾收集,您的服务器将获得EOF
标签: java sockets serializable objectinputstream objectoutputstream