折戟X沉沙 2015-04-09 01:28 采纳率: 72.7%
浏览 2229
已采纳

问题:同一个Socket上能有多个流吗?

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()?

  • 写回答

3条回答 默认 最新

  • chenhucxc 2015-04-09 01:35
    关注

    不行的
    一个socket就像一个管道,
    你的数据就像水流,
    假设不同的数据是不同颜色的墨水,
    黑色和红色都往一个管道里面走,
    出来的时候就分不出来了。

    你可以把发送的数据写成块,每次只发送一个块,这个块可能是红色,也可能是黑色,服务器一块一块的读,块上面标记类型和长度,读的时候就知道这个块到底是什么了。
    可以从多个线程往负责IO的线程发送数据块,由IO线程保证写完一个块再写另外一个块。

    以上回答来自百度http://zhidao.baidu.com/link?url=OeILeFFWk8bExiAUKSqKpFAETk39oubMdRz55t5Cw3yB_BnPHSfCyOYKejhtQZbJq_UZo_OnzEeUsjoEvAse4K

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?