gpt4 book ai didi

Python 套接字点对点

转载 作者:可可西里 更新时间:2023-11-01 02:31:40 27 4
gpt4 key购买 nike

我正尝试在 Python 2.7 中创建一个简单的点对点网络。问题是,我似乎无法在两台同时充当服务器和客户端的机器之间建立连接。当一个是服务器而另一个是客户端时,我可以让它工作,但当它们都是时,我就不能工作。我需要创建 2 个套接字吗?我还使用 TCP 进行连接。

更新:

import socket, sys               # Import socket module

s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port

if sys.argv[1] == "connect":
host = sys.argv[2]
s.connect((host, port))
s.close
else:
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
c.send('Thank you for connecting')
c.close()

代码不是很好,因为对于作为客户端连接的人来说,他们必须使用参数“connect”,后跟第二台机器的主机名或 IP。我无法让两者同时连接并相互服务。

最佳答案

是的,需要两个 socket 。监听套接字应该在常量端口上打开,而客户端端口应该在不同的(可能是动态的)端口上打开,通常在端口范围内更高。例如:

服务器套接字在端口 1500 上,客户端套接字在端口 1501 上。

对等点 1:192.168.1.101

对等点 2:192.168.1.102

当 peer1 连接到 peer2 时,它看起来像这样:192.168.1.101:1501 -> 192.168.1.102:1500。

当 peer2 连接到 peer1 时,它看起来像这样:192.168.1.102:1501 -> 192.168.1.101:1500。

监听 TCP 套接字通常也在单独的线程上运行,因为它们是阻塞的。

关于Python 套接字点对点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267305/

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