如何通过java中的套接字发送和接收对象

时间:2017-04-16 12:34:35

标签: java multithreading

这是我的服务器类,我想发送简单的类'heee',但每次连接到客户端时,我都会从try catch中获得'用户未被发送'。我做错了什么?

public class heee{

   String  me = "hehehe";
}
public static void main(String args[]) throws Exception { 
  ServerSocket ssock = new ServerSocket(2222);
  System.out.println("Listening");

  while (true) 
  {
     Socket sock = ssock.accept();
     System.out.println("Connected");
     new Thread(new MultiThreadedServer(sock)).start();
  }


}
@Override
public void run() {
   try  
   {
        out = new ObjectOutputStream(csocket.getOutputStream());

        heee hope = new heee();
        out.writeObject(hope);
        System.out.println("debug line");

   }catch(Exception ex)
    {
        System.out.println("users was not sent");
    }

这里我想读一下线程中的对象。

public class ChatServer implements Runnable {

Socket clientSocket = null;
ObjectInputStream in = null;

@Override
public void run()
{
    try
    {
        clientSocket =  new Socket ("localhost", 2222);
        in = new ObjectInputStream(clientSocket.getInputStream());
        heee nope = (heee) in.readObject();
        System.out.print(nope.me);

    } catch(Exception Ex)
            {

            }

}



public static void main(String args[]) throws Exception {

    new Thread(new ChatServer()).start();

}

public class heee{

   String  me;
}

}

1 个答案:

答案 0 :(得分:0)

如果要查看错误的真正原因,则需要打印堆栈跟踪。你抓住了NotSerializableException。您要写入或读取的每个对象都必须是可序列化的。将implement Serializable添加到heee签名。