首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >套接字: Peer to Peer聊天如何工作?

套接字: Peer to Peer聊天如何工作?
EN

Stack Overflow用户
提问于 2016-06-04 17:25:53
回答 2查看 1.8K关注 0票数 0

我试图在不手动添加用户IP地址的情况下进行P2P聊天。

这些脚本将通过手动指定IP地址来发送和接收UDP数据包的UTF-8消息。

代码语言:javascript
复制
# 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执行接收方脚本。

代码语言:javascript
复制
    # 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模块用于套接字吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-04 23:15:24

在1:1的情况下,第一个程序不需要知道其他人的地址。它只是开始和等待。第二个程序需要知道第一个程序的地址。一旦发送"hello“,第一个程序现在就通过recvfrom知道第二个程序的地址。

如果您希望没有已知地址,那么它就不再是问题了。现在,您需要了解自动配置和网络发现协议。多播?DNS服务发现?Bonjour?

很快就会变得复杂起来。有一个很好的理由,为什么这么多聊天和类似聊天的互联网系统有一个单一的服务器,每个人都知道的地址。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2022-06-02 09:31:13

也许可以帮助这个链接P2P Berry Tella=BT这个存在和python的源代码(如果需要的话!)希望能帮助你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37633073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档