【问题标题】:How to receive an object on a socketServer in java如何在java中的socketServer上接收对象
【发布时间】:2015-08-19 01:35:19
【问题描述】:

我想将一个对象(数组)从客户端发送到服务器。我使用 ObjectInputStream 和 ObjectOutputStream。但是,这会引发错误,即这些方法未在 serverSocket 类中定义。 我该如何解决这种情况??`

public int[] readResponse() throws IOException, ClassNotFoundException{
    int[] x = new int[5];



    ObjectOutputStream cO = new ObjectOutputStream(serverSocket.getOutputStream()); //here is the error
    ObjectInputStream cI = new ObjectInputStream(serverSocket.getInputStream()); // here is the error

    cO.writeObject(x); 

     x = (int[]) cI.readObject();
     for (int i = 0; i < 5; i++){
         System.out.println(x[i]);
     }
     return x;
    }

【问题讨论】:

  • serverSocket 对象的类是什么?我没有看到它在本地定义

标签: java sockets


【解决方案1】:

java.net.ServerSocket 并不意味着用于实际的输入和输出;它是一个套接字,用于在服务器上侦听被接受的传入连接请求,从而生成一个 java.net.Socket,然后用于读取和写入。

Socket socket = serverSocket.accept();
ObjectInputStream cI = 
     new ObjectInputStream(socket.getInputStream());

在客户端,通过调用构造函数创建一个 java.net.Socket,并通过地址连接到客户端。

Socket socket = new Socket( address, port );
ObjectOutputStream cO =
     new ObjectOutputStream(socket.getOutputStream());

【讨论】:

  • 那么我应该用每个 Socket 对象替换这个 serverSocket 吗??
  • 您使用(在服务器中)一个 ServerSocket。每次接受后,您都有另一个用于数据传输 i/o 的 Socket。 “替换”不是正确的词;你可能需要重新设计,但你没有发布你的逻辑,只有一些断章取义的陈述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
相关资源
最近更新 更多