【问题标题】:Python socket taking wrong portPython套接字占用错误的端口
【发布时间】:2017-07-24 00:10:02
【问题描述】:

为什么我的 python 脚本会这样?
我给了它通过端口 7777 连接的指令,但它却超过了 45604。

我没有使用socket.bind((socket.gethostname(),port))

相反,我使用socket.bind(("0.0.0.0",port))
socket.bind(("127.0.0.1",port))
所以我在当地工作。为什么我的电脑会重新路由端口?
应该没有必要,不是吗?我可以以某种方式在本地禁用它吗?

【问题讨论】:

  • 你能给Jhonson.py的代码吗?
  • 完成后我可以上传到堆栈交换,现在我有答案了,谢谢

标签: python networking port nat


【解决方案1】:

我是在没有你的任何实际代码的情况下回答的。所以我必须在这里做出假设:

1) 您的服务器(图片右侧)正在侦听端口 7777。

2) 您正在连接到服务器的同一台机器(图片左侧)上运行客户端。

因此,客户端(左侧 shell)正在连接到服务器(右侧 shell 窗口)。服务器在7777上监听,客户端从45604连接到服务器(客户端和服务器不能在同一台机器上占用同一个端口!)

换句话说,客户端“发送”到端口 7777端口 45604。也许这更有意义?

【讨论】:

  • 感谢您的解释。不知道这些基本的东西我觉得有点天真,但你说得一清二楚。
【解决方案2】:

一个 TCP 连接由 4 个数字定义:源 IP 地址、源端口、目标 IP 地址、目标端口。

连接从 127.0.0.1 端口 45604 到 127.0.0.1 端口 7777。

源端口 (45604) 是系统从大量未使用的端口(称为临时端口)中选择的值,因为您的程序没有设置特定的源端口。

【讨论】:

  • 我真的不知道我可以设置一个特定的源端口。将不得不深入挖掘。谢谢
  • @clockw0rk 很高兴您发现我的回答很有帮助。不设置客户端端口是很常见的。该值通常无关紧要,操作系统更清楚哪个未使用。
  • 好的,所以我想我会完全忽略它。感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2016-06-28
  • 2018-10-30
相关资源
最近更新 更多