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

问题:同一个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条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)