我试图在不手动添加用户IP地址的情况下进行P2P聊天。
这些脚本将通过手动指定IP地址来发送和接收UDP数据包的UTF-8消息。
# Send
# Let's say this code is executed from PC1.
import socket
PC2_IP = '192.160.4.169' # IP address is not valid, it is just for example.
UDP_PORT = 5005
MESSAGE = "Hey there!"
sock = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))现在,作为示例,让我们从PC2执行接收方脚本。
# Receive
# Let's say this code is executed from PC2.
import socket
ip = socket.gethostbyname(socket.gethostname())
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.bind((ip, 5005))
while True:
data, addr = udp.recvfrom(1024)
print data这将没有任何问题,消息将在脚本执行后立即接收。
但理论上,我如何在不手动指定IP地址的情况下进行P2P聊天?
如何使应用程序获得两个用户的主机名?我是否需要在发送者和接收者脚本中指定带有socket.gethostbyname(socket.gethostname())的IP地址?

如果我需要一些额外的必要模块,其中哪一个会是?我可以将P2P模块用于套接字吗?
发布于 2016-06-04 23:15:24
在1:1的情况下,第一个程序不需要知道其他人的地址。它只是开始和等待。第二个程序需要知道第一个程序的地址。一旦发送"hello“,第一个程序现在就通过recvfrom知道第二个程序的地址。
如果您希望没有已知地址,那么它就不再是问题了。现在,您需要了解自动配置和网络发现协议。多播?DNS服务发现?Bonjour?
很快就会变得复杂起来。有一个很好的理由,为什么这么多聊天和类似聊天的互联网系统有一个单一的服务器,每个人都知道的地址。
希望这能有所帮助。
发布于 2022-06-02 09:31:13
也许可以帮助这个链接P2P Berry Tella=BT这个存在和python的源代码(如果需要的话!)希望能帮助你!
https://stackoverflow.com/questions/37633073
复制相似问题