Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插座上的多个输出_Java_Sockets_Arraylist - Fatal编程技术网

Java 插座上的多个输出

Java 插座上的多个输出,java,sockets,arraylist,Java,Sockets,Arraylist,我正在尝试使用套接字流进行多个数据传输 用于发送列表 用于发送文本 我是否可以只使用一个套接字来发送一个字符串,该字符串告诉客户端所需的数据类型,然后是所需的数据(在本例中是列表) 以下是我的想法: //declarations //outputs and inputs private ObjectInputStream input; private ObjectOutputStream output; private OutputStream checkStatu

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

  • 用于发送
    列表
  • 用于发送文本
我是否可以只使用一个套接字来发送一个
字符串
,该字符串告诉客户端所需的数据类型,然后是所需的数据(在本例中是
列表

以下是我的想法:

//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();
    }
//声明
//产出和投入
私有对象输入流输入;
私有对象输出流输出;
私有输出流检查状态;
私人打印输出;
...
private void forwardMessage(列表客户端)引发IOException{
checkStatus=client.getOutputStream();
out=新的PrintWriter(新的OutputStreamWriter(checkStatus)),true;
out.println(“命令选项1”);
client.shutdownOutput();
output=newObjectOutputStream(client.getOutputStream());
对于(inti=0;i
尝试此操作时给出的错误是“
java.net.SocketException:Socket已关闭”

我还试图关闭OutputStream,但结果相同


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

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

然后,在检测数据时,您始终可以执行以下操作:


if(你的字符串的名称比较(“你在找什么”)){
//你想用“你在找什么”做什么
}

为什么选择client.shutdownOutput();在getOutputStream()之前?