【问题标题】:How can i connect two computers with python socket?如何使用 python 套接字连接两台计算机?
【发布时间】:2021-08-04 22:17:55
【问题描述】:

我是新来的! 我的两台电脑连接到不同的 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()

【问题讨论】:

    标签: python sockets ip


    【解决方案1】:

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

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

    免责声明:我已经有大约 15 年没有使用 hamachi 了,只是因为下面的其中一个 cmets 而经历了这个过程。

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

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

    【讨论】:

    • 我在hamachi上做了VPN,但找不到IP,你能帮帮我吗? :)
    • 编辑了我的帖子,希望您现在能有所了解。
    • 太好了,你能接受这种情况下的答案吗,这样尝试做同样事情的人可以很容易地找到它?
    • 当然,抱歉回答晚了:)
    • 你知道我如何从客户端发送消息到服务器吗?我应该在我的代码中改变什么或者我应该写什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2023-03-09
    • 1970-01-01
    • 2013-08-03
    • 2015-05-17
    • 2015-12-06
    相关资源
    最近更新 更多