azl397985856 / fe-interview

宇宙最强的前端面试指南 (https://lucifer.ren/fe-interview)
Apache License 2.0
2.83k stars 260 forks source link

【每日一题】- 2020-09-04 - 多个进程如何监听同一个端口 #149

Closed azl397985856 closed 3 years ago

azl397985856 commented 4 years ago

一个进程监听端口,如果多次启动一个进程会报错:“Address already in use!"。有什么方法可以实现多个进程监听同一个端口呢?

feikerwu commented 4 years ago

进程监听端口会有三个流程

  1. 新建一个socket fd
  2. 将fd绑定到端口
  3. 开始监听端口

多个进程可以通过以下方式监听同个端口

  1. 进程在第2阶段bind到端口后,通过fork生成子进程,子进程继承了父进程的描述符,实现多进程监听
  2. linux 在新建socket的时候提供SO_REUSEPORT选项支持多进程监听
stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.