问一个多线程共享端口的问题

一个应用程序绑定了一个端口。这个端口内有五个线程,这五个线程都通过这个端口同时发送、接受数据。我的问题是,假如来了数据,那么应用程序如何判断该把这个数据发送给哪个线程呢?... 一个应用程序绑定了一个端口。这个端口内有五个线程,这五个线程都通过这个端口同时发送、接受数据。
我的问题是,假如来了数据,那么应用程序如何判断该把这个数据发送给哪个线程呢?
我指的是内部的实现原理
展开
 我来答
百度网友d050c1b
推荐于2016-08-11 · TA获得超过933个赞
知道小有建树答主
回答量:1083
采纳率:50%
帮助的人:1028万
展开全部
分两种情况来讲。
1,应用程序是client,绑定端口,读写同一个socket,因为对socket读和写是原子的,同时有且仅有一个线程可以发送和接收,那么,哪个线程获得了锁,就哪个读或者是写。
2,应用程序是server,绑定端口port1,因为通常用一个socket来接收新的连接,不同的线程来处理新建的连接,这个时候 ,不会有冲突发生,因为,读写的是不同的socket。
最后,纠正一下,应用程序不是直接通过端口与其它应用通信的,而是通过操作系统封装过的一个抽象的数据类型socket与其它应用通信。对于TCP/IP来说,一个socket至少包含这样四个元素,本机ip、本机port、远程ip、远程port
追问
按你的说法,一个端口会对应若干个同时运行的socket,对吧?那当数据来了的时候,计算机如何判断该把数据发送给哪个socket呢?
追答
操作系统会根据数据(网络包)里面的这几个信息找到对应的socket:
1 源ip地址
2 源端口
3 目的ip地址
4 目的端口

数据包里面的这几个信息的更加详细的描述可以参考百科(http://baike.baidu.com/view/7649.htm),这部分也是计算机学科里面网络通信的基础知识,一般计算机网络相关的书籍会有详细的讲解。
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
光含佛r5unX
2012-09-24
知道答主
回答量:52
采纳率:0%
帮助的人:16.9万
展开全部
好像没法区分啊,应该每个线程都有相同的处理函数吧,如果理解错误,希望能告诉一声。。菜鸟。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式