套接字上有多个输出

时间:2012-02-02 19:20:39

标签: java sockets arraylist

我正在尝试使用套接字流进行多次数据传输。

  • 用于发送List<>
  • 用于发送文字
  • ...

我是否可以只使用一个套接字发送String来告诉客户端期望的数据类型,然后是预期的数据(在这种情况下为List<>)?

这就是我的想法:

//declarations
//outputs and inputs
    private ObjectInputStream input;
    private ObjectOutputStream output;
    private OutputStream checkStatus;
    private PrintWriter out;
    ...
    private void forwardMessage(List<User> clients) throws IOException {
        checkStatus = client.getOutputStream();
        out = new PrintWriter(new OutputStreamWriter(checkStatus), true);
        out.println("Command Option 1");    
        client.shutdownOutput();
        output = new ObjectOutputStream (client.getOutputStream());
        for (int i = 0; i < clients.size(); i++) {      
            output.flush();
            output.writeObject(clients.get(i));
            output.flush();
            output.reset();
        }
        output.writeObject(null);
        client.shutdownOutput();
    }

尝试此操作时出现的错误是“java.net.SocketException: Socket is closed

我也尝试关闭OutputStream,但结果相同。

如何只使用一个流套接字进行多次数据传输?

1 个答案:

答案 0 :(得分:0)

如果您尝试通过网络发送此数据,这可能有所帮助:

http://systembash.com/content/a-simple-java-udp-server-and-udp-client/

然后,当涉及到检测数据时,您可以始终执行以下操作:

if(name_of_your_string.compare("what_you_are_looking_for")){ //what you want to do with "what_you_are_looking_for" }