python - 如何使用 python 套接字连接两台计算机?

标签 python sockets ip

我是新来的! 我在使用不同 wi-fi 连接的两台计算机之间出现连接问题。大约 20 秒后,我收到无法完成连接的信息。 有我的代码: 服务器:

from socket import *


lista = ['computer']

s = socket(AF_INET, SOCK_STREAM)

port = 21312
s.bind(('my ipv4', port))

s.listen(5)
while True:

for i in range (0, len(lista)):
    a = str(lista[i]).encode()
    c, addr = s.accept()
    print("CONNECTION WITH",addr)
    c.send(a)
    print(a)
    c.close()

客户:

import socket
from socket import *

port = 21312

while True:
s = socket(AF_INET,SOCK_STREAM)
s.connect(('my ipv4', port))
odebrana = (s.recv(1024))
decoded = odebrana.decode()
print(decoded)
s.close()

最佳答案

您遇到问题可能是因为您的服务器位于网络地址转换器 (NAT) 后面。这样您的客户端就无法直接使用服务器的 IP,因为它无法访问。有几种方法可以解决这个问题。

  1. 最简单但不太实用的方法是:将两台计算机置于同一网络中,然后它应该可以工作。
  2. 获取服务器的公共(public) IP 地址。您可以将其托管在为您提供公共(public) IP 的云服务器上,例如 aws、azure、google cloud 等。
  3. 过去我们使用hamachi获得一个可以连接两台机器的VPN。然后他们可以通过该 VPN 相互识别。只需打开 hamachi(或任何其他 VPN 解决方案),运行您的服务器,然后从您的客户端(连接到 VPN)使用 VPN 的服务器 IP(hamachi 将在您设置网络时为您提供一个)。

免责声明:我大约 15 年没有使用过 Hamachi,但由于下面的评论之一,我才经历了这个过程。

似乎您可以创建一个帐户,然后一旦您打开它,您应该会看到您的 v4 和 v6 地址,如下所示:

Hamachi IP

突出显示的是我的 v4 地址。我怀疑您需要创建一个网络,将两台电脑加入同一网络,然后使用 hamachi 的 IP 来模拟行为,就像它们通过 LAN 连接一样。

关于python - 如何使用 python 套接字连接两台计算机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67539425/

相关文章:

linux - linux select() 如何工作?

node.js - Node : Never emits "end" when reading a TCP Socket

node.js - 如何使用node.js在机器人中获取用户的IP地址?

android - 无法获取我设备的 IP 地址

python - 圣人中的分数模整数?

python - 复制具有相同属性的 tensorflow 层以形成图

c - 带有 pthreads 问题的套接字

linux - 如何在linux中路由

python - 没有名为 'polls.apps.PollsConfigdjango' 的模块; Django项目教程2

python - 为什么对于 Keras 中的 Theano 和 Tensorflow 后端,一对图像之间的 L2 距离会得到不同的结果?