在 Windows 上分别在两个 terminal 中运行 python -m http.server ,神奇的是竟然可以同时运行,没有报端口占用,明明都是 8000 端口啊,自己写的代码就不行。咋回事?
在 Windows 上分别在两个 terminal 中运行 python -m http.server ,神奇的是竟然可以同时运行,没有报端口占用,明明都是 8000 端口啊,自己写的代码就不行。咋回事?
|
PTLinMay 30, 2024
1
Linux 上用了 SO_REUSEADDR: https://github.com/python/cpython/blob/3.12/Lib/socketserver.py#L469
|
|
2
|
|
3
@PTLin #1 linux 上设置了这个属性,也会报:OSError: [Errno 98] Address already in use 。Linux 用不了这个属性?
|
|
4
@paopjian #2 嗯,好像还真是 windows 独有。
|
|
PTLinMay 30, 2024
5
@sbldehanhan 忘说了,下面还有一个 SO_REUSEPORT
|
|
zzhaoleiMay 30, 2024
6
SO_REUSEADDR 和 SO_REUSEPORT ,据说微信用的也是这一套,一个端口多个进程提供服务
|
|
7
@PTLin #5 确实可以。Linux 上 PORT 也需要设置一下才行。
|