gpt4 book ai didi

python - 如何使用 python 套接字模块向远程计算机发送消息?

转载 作者:行者123 更新时间:2023-12-04 14:15:12 24 4
gpt4 key购买 nike

我正在尝试将消息从一台计算机发送到另一台未连接到另一台计算机本地网络的计算机。我进行了端口转发(端口 8080,TCP),但未能成功连接远程计算机并发送消息。当我尝试连接时,它只是卡在连接方法(客户端)上。

我还需要说明一下,我愿意更改路由器设置中的任何内容。

客户端代码(远程电脑):

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("%My public IP address%", 8080))
msg = s.recv(1024)
msg = msg.decode("utf-8")
print(msg)

服务器代码:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.0.2", 8080))
s.listen(5)

while True:
clientsocket, address = s.accept()
print(f"Connection from {address} has been established.")
clientsocket.send(bytes("Hey there!!", "utf-8"))
clientsocket.close()

最佳答案

据我了解,您的目标是从远程计算机连接到服务器并从服务器向客户端发送消息。因此,它所需要的只是客户端连接到服务器的面向外部的 IP 地址。完成后,路由器根据端口转发规则简单地转发流量。

服务器:

import socket

def Main():
host = '10.0.0.140'
port = 42424
s = socket.socket()
s.bind((host, port))

s.listen(1)
c, addr = s.accept()
while True:
data = c.recv(1024)
if not data:
break
data = str(data).upper()
c.send(data)
c.close()
if __name__ == '__main__':
Main()

客户:

import socket

def Main():
host = '10.0.0.140' #The host on your client needs to be the external-facing IP address of your router. Obtain it from here https://www.whatismyip.com/
port = 42424
s = socket.socket()
s.connect((host,port))
message = raw_input("->")
while message != 'q':
s.send(message)
data = s.recv(1024)
message = raw_input("->")
s.close()

if __name__ == '__main__':
Main()

另请注意,当连接到 NAT 防火墙/路由器后面的服务器时,除了端口转发外,客户端还应定向到路由器的 IP 地址。对于客户端来说,路由器的IP地址就是服务器。路由器只是根据端口转发规则转发流量。

关于python - 如何使用 python 套接字模块向远程计算机发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60896215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com