Socket socket = server.accept();
DataInputStream input=new DataInputStream(socket.getInputStream());
List list=new Arraylist();
list.add(socket);
Socket socket1=list.get(0);
DataInputStream input1=new DataInputStream(socket1.getInputStream());
这里的input和input1为什么不能同时readUTF()?
不行的
一个socket就像一个管道,
你的数据就像水流,
假设不同的数据是不同颜色的墨水,
黑色和红色都往一个管道里面走,
出来的时候就分不出来了。
你可以把发送的数据写成块,每次只发送一个块,这个块可能是红色,也可能是黑色,服务器一块一块的读,块上面标记类型和长度,读的时候就知道这个块到底是什么了。
可以从多个线程往负责IO的线程发送数据块,由IO线程保证写完一个块再写另外一个块。
input和input1实际上是同样一个流。只不过是包装了一下而已。
Arraylist()是指针引用,你怎么放置无所谓,只要是非基础数据类型数据,都是指针引用
另外如果你打算在同一个socket实现分流(客户端与服务端只有一个连接),建议你定义数据协议,在协议上实现分流,分布操作。