网络--多个进程能否监听同一端口

转载 2018年04月16日 09:15:33

文章出自jiq•钦’s technical Blog - 季义钦

我们都知道socket是网络上两个进程之间的双向通信链路, 即

socket = 《A进程的IP地址:端口号,B进程的IP地址:端口号》



那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:端口号么?

根据Unix网络编程中的知识可知,服务端监听一个端口会经历:

1、根据套接字类型(Ipv4,Ipv6等)创建套接字socket

2、将套接字bind绑定到具体的网络地址和端口号

3、调用listen开始在这个套接字上进行监听。

Unix提供了一个接口setsockopt()可以在bind之前设置套接字选项,其中就包括REUSEADDR这个选项,表明可以多个进程复用bind函数中指定的地址和端口号。

由此可知多个应用(进程),包括同一个应用多次,都是可以绑定到同一个端口进行监听的。对应地C++、NET等高级语言也都提供了对应的接口。

从一些例子也可以看出,比如有时候你在服务器上执行netstat -ano可能会发现同一个应用程序在同一个端口上有多个监听,这是因为一些服务端应用程序可能会异常退出或者没有完全释放套接字,但是需要在重新启动时还能够再次监听同一个端口,所以需要能够具备重复监听同一个端口的能力,因此也出现上述情形。

多个进程能否监听同一个端口号?

我们都知道socket是网络上两个进程之间的双向通信链路, 即socket = A进程的IP地址:端口号  B进程的IP地址:端口号。 那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:...
  • jiq408694711
  • jiq408694711
  • 2016-03-22 22:58:55
  • 8642

多进程侦听同一端口

多进程侦听同一端口   2013-03-05 09:12:55|  分类: 网读札记 |  标签:linux  |举报|字号 订阅 来源:网易博客 Tsecer...
  • cwj649956781
  • cwj649956781
  • 2014-03-19 15:10:37
  • 8094

两个进程,或者多个进程同时监听一个端口,邦定同一个端口,

void ReceiveTest() { //1 创建套节字 System.Net.Sockets.Socket s = n...
  • daonidedie
  • daonidedie
  • 2012-12-10 15:03:47
  • 6084

unix/linux 系统实现多个进程监听同一个端口

一直疑惑同一个应用app如何才能以多进程,多线程的方式运行。对于多线程可能很好理解,我们只要在进程中启用多线程的模式即可。也就是来一个请求,我们就用函数pthread_create()启用一个线程即可...
  • youjun9007228198
  • youjun9007228198
  • 2014-02-26 03:01:06
  • 3383

多个进程可以监听同一个端口?

多个socket绑定同一个端口,叫做端口复用 下列代码可以使用socket绑定多次 //SO_REUSEADDR选项就是可以实现端口重绑定的   if(setsockopt(s,SOL_SOC...
  • memo_weiwei
  • memo_weiwei
  • 2012-06-27 16:17:22
  • 6345

单个进程监听多个端口及多个进程监听同一个端口

单个进程监听多个端口 单个进程创建多个 socket 绑定不同的端口,TCP, UDP 都行 多个进程监听同一个端口(multiple processes listen on same port)...
  • duyiwuer2009
  • duyiwuer2009
  • 2015-01-28 12:46:29
  • 7000

多进程监听同一个端口 php

http://www.jianshu.com/p/f440c19e77ac 多进程监听同个端口及单进程监听多个端口的php版本实现 字数536 阅读74 评论1 喜欢2 最近...
  • pzqingchong
  • pzqingchong
  • 2016-12-13 21:02:59
  • 298

多进程监听同个端口及单进程监听多个端口的php版本实现

转自:http://www.jianshu.com/p/f440c19e77ac 最近在看nginx设计原理时思考到两个问题,便是: 多个进程能否监听同个端口?单个进程能否监听多个端口? 当...
  • u013220054
  • u013220054
  • 2017-03-20 21:31:31
  • 952

同一进程中同一端口如何区分不同的Socket

为了区分不同应用进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP 或 UDP)和使用的端口号。     Socket的原意是“插座”。通过将这3个参数结合起来...
  • striver1205
  • striver1205
  • 2014-08-29 17:58:42
  • 6715
收藏助手
不良信息举报
您举报文章:网络--多个进程能否监听同一端口
举报原因:
原因补充:

(最多只允许输入30个字)