TCP和UDP同时监听同一个端口

yeluo1990 2014-06-11 04:52:54
TCP和UDP同时监听同一个端口时,UDP接受到的包是仅有UDP协议发送的么?还是TCP和UDP协议发的包它都可以接受到啊??????
...全文
7607 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
starnight_cyber 2016-08-19
  • 打赏
  • 举报
回复
在网络层IP数据包向上传递的时候会查看数据包中的协议类型 如果协议类型是TCP,则交给TCP 如果协议类型是UDP,则交给UDP 到了传输层,再根据端口号将数据传送到应用层相应的应用程序,TCP、UDP端口是独立的
伍佰是只喵 2015-08-31
  • 打赏
  • 举报
回复
学习了,都是高手啊
赵4老师 2014-06-13
  • 打赏
  • 举报
回复
引用 28 楼 my3439955 的回复:
仅限windows平台: 传输层的监听端口和网卡个数、每个网卡的ip数目无关,他能看到的是本机的所有ip地址 绑定地址0.0.0.0表示的即是“所有地址” 也可以绑定具体地址如127.0.0.1或192.168.0.123,这个ip地址必须是存在的,这样将只能处理到该具体地址上的数据 同时绑定127.0.0.1和0.0.0.0看似冲突,其实也是可以的。这样到达127.0.0.1的数据会转给监听127.0.0.1的套接字,到达所有本机其他地址的数据会转给0.0.0.0。具体地址是优先的。这可以用来做坏事 是独占的吗?答案是肯定的,绑定到某一地址上的某端口后不能再次绑定,会失败。但是可以设置地址重用来突破这个限制。setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, 1, sizeof(1));
你的意思是不是27楼的三种情况在不使用SO_REUSEADDR时都不可行?
  • 打赏
  • 举报
回复
之所以仅限windows平台是因为windows和linux对SO_REUSEADDR的定义是不一样的,windows上的意思是说“允许一个相同地址和端口的绑定”,linux上不是这个意思
  • 打赏
  • 举报
回复
仅限windows平台: 传输层的监听端口和网卡个数、每个网卡的ip数目无关,他能看到的是本机的所有ip地址 绑定地址0.0.0.0表示的即是“所有地址” 也可以绑定具体地址如127.0.0.1或192.168.0.123,这个ip地址必须是存在的,这样将只能处理到该具体地址上的数据 同时绑定127.0.0.1和0.0.0.0看似冲突,其实也是可以的。这样到达127.0.0.1的数据会转给监听127.0.0.1的套接字,到达所有本机其他地址的数据会转给0.0.0.0。具体地址是优先的。这可以用来做坏事 是独占的吗?答案是肯定的,绑定到某一地址上的某端口后不能再次绑定,会失败。但是可以设置地址重用来突破这个限制。setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, 1, sizeof(1));
赵4老师 2014-06-13
  • 打赏
  • 举报
回复
请问 tcp监听 端口 是独占式的吗??在一个程序通过tcp监听某个端口的时候,别的程序能同时监听该端口接受数据吗? 请楼下专家分以下情况分别回答: ◆单网卡,同一IP ◆单网卡,两个不同IP ◆两块网卡,各自不同IP 求教育。
猴头 2014-06-13
  • 打赏
  • 举报
回复
引用 23 楼 my3439955 的回复:
同时监听的意思是同一时刻让tcp的某一端口和udp的同一数值的端口同时处于listening状态 上面有网友说udp的不能叫监听,应该有个其他的叫法。我认为都可以,只要把意思表达出来即可 tcp监听办法: SOCKET sock = socket(TCP) sockaddr_in sin sin.port = htons(xxx) bind(sock, sin) listen(sock) 这样就进入了监听状态,在xxx端口,接下来可以accept了 udp监听办法 SOCKET sock = socket(UDP) sockaddr_in sin sin.port = htons(xxx) bind(sock, sin) 这样就进入了监听状态,在xxx端口,接下来可以recvfrom和sentto了 一般的,如果有另一个请求(无论是否在同一个进程,无论是tcp还是udp)也监听xxx端口,会在bind处报错(一般情况,具体不展开了) 两点: 1、端口不是物理概念,仅仅是协议栈中的两个字节 2、TCP和UDP的端口完全没有任何关系,完全有可能又有一种XXP基于IP,也有端口的概念,这是完全可能的
请问 tcp监听 端口 是独占式的吗??在一个程序通过tcp监听某个端口的时候,别的程序能同时监听该端口接受数据吗?
luotuo44 2014-06-13
  • 打赏
  • 举报
回复
是可以同时使用同一个端口的。 当网络层的IP协议收到一个数据包后,它会解包,判断这个包是TCP的还是UDP的,然后发给相应的协议处理模块。
zhousitiaoda 2014-06-13
  • 打赏
  • 举报
回复
学习了。。。。
  • 打赏
  • 举报
回复
同时监听的意思是同一时刻让tcp的某一端口和udp的同一数值的端口同时处于listening状态 上面有网友说udp的不能叫监听,应该有个其他的叫法。我认为都可以,只要把意思表达出来即可 tcp监听办法: SOCKET sock = socket(TCP) sockaddr_in sin sin.port = htons(xxx) bind(sock, sin) listen(sock) 这样就进入了监听状态,在xxx端口,接下来可以accept了 udp监听办法 SOCKET sock = socket(UDP) sockaddr_in sin sin.port = htons(xxx) bind(sock, sin) 这样就进入了监听状态,在xxx端口,接下来可以recvfrom和sentto了 一般的,如果有另一个请求(无论是否在同一个进程,无论是tcp还是udp)也监听xxx端口,会在bind处报错(一般情况,具体不展开了) 两点: 1、端口不是物理概念,仅仅是协议栈中的两个字节 2、TCP和UDP的端口完全没有任何关系,完全有可能又有一种XXP基于IP,也有端口的概念,这是完全可能的
  • 打赏
  • 举报
回复
引用 20 楼 zhao4zhong1 的回复:
[quote=引用 19 楼 lianshaohua 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote]
引用 18 楼 zhao4zhong1 的回复:
[quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote] 吹,接着吹[/quote] 广大版主和CSDN坛友可以作证,我这句话真不是吹![/quote] 我作证,没吹
ztenv 版主 2014-06-13
  • 打赏
  • 举报
回复
引用 20 楼 zhao4zhong1 的回复:
[quote=引用 19 楼 lianshaohua 的回复:] [quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote]
引用 18 楼 zhao4zhong1 的回复:
[quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote] 吹,接着吹[/quote] 广大版主和CSDN坛友可以作证,我这句话真不是吹![/quote] 有版主为你作证吗?找几个来
  • 打赏
  • 举报
回复
◆单网卡,同一IP,需要SO_REUSEADDR ◆单网卡,两个不同IP,各顾各的 ◆两块网卡,各自不同IP,各顾各的
91program 2014-06-12
  • 打赏
  • 举报
回复
各收各的,本来对于 TCP 和 UDP 而言,同一个端口其实是两个东东。没有关系的!
赵4老师 2014-06-12
  • 打赏
  • 举报
回复
引用 19 楼 lianshaohua 的回复:
[quote=引用 18 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote]
引用 18 楼 zhao4zhong1 的回复:
[quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote] 吹,接着吹[/quote] 广大版主和CSDN坛友可以作证,我这句话真不是吹!
ztenv 版主 2014-06-12
  • 打赏
  • 举报
回复
引用 18 楼 zhao4zhong1 的回复:
[quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote]
引用 18 楼 zhao4zhong1 的回复:
[quote=引用 14 楼 lianshaohua 的回复:] [quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。[/quote] 吹,接着吹
赵4老师 2014-06-12
  • 打赏
  • 举报
回复
引用 14 楼 lianshaohua 的回复:
[quote=引用 12 楼 zhao4zhong1 的回复:] [quote=引用 10 楼 lianshaohua 的回复:] [quote=引用 5 楼 zhao4zhong1 的回复:] [quote=引用 4 楼 lianshaohua 的回复:] 互不影响,并且UDP不叫监听,只有TCP才叫监听
哦?又学习了。[/quote] 大师不要取笑我等[/quote] 真不是取笑。我真没弄过UDP。[/quote] 弱弱的问一句,你弄过什么?[/quote] 我在CSDN里面复制粘贴得过分。
mujiok2003 2014-06-12
  • 打赏
  • 举报
回复
引用 15 楼 lianshaohua 的回复:
[quote=引用 13 楼 xuzhouweihao 的回复:] 同时监视是什么意思啊? 是不是说这个端口同时支持UDP和TCP服务啊? 如果是这样的话,如果过来一个TCP或者UDP的包, 在ip层处理时,会判断是否是UDP协议的包还是TCP协议的,然后分别处理。
五元组[/quote] ++ <protocal, src ip , src port, dest ip, dest ip>
Newtown-Gao 2014-06-12
  • 打赏
  • 举报
回复
引用 2 楼 adlay 的回复:
TCP 和 UDP 的端口是不冲突的,各收各的。 而且很多标准服务都是 TCP 和 UDP 在相同的端口提供相同的服务。
ztenv 版主 2014-06-12
  • 打赏
  • 举报
回复
引用 13 楼 xuzhouweihao 的回复:
同时监视是什么意思啊? 是不是说这个端口同时支持UDP和TCP服务啊? 如果是这样的话,如果过来一个TCP或者UDP的包, 在ip层处理时,会判断是否是UDP协议的包还是TCP协议的,然后分别处理。
五元组
加载更多回复(13)

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧