我尝试使用pythonsockets库在本地网络上的两台linux机器之间建立UDP单播。我设法使用以下代码发送和接收包裹:
发送
import socket
HOST = '192.168.1.194' # IP of remote machine
PORT = 47808
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto('Hello UDP', (HOST, PORT))
s.close()
接收
^{pr2}$但是,绑定到''
会使接收代码从任何本地接口接受数据包。如果我尝试绑定到发送机器的IP地址(在接收代码中将HOST = ''
更改为HOST = '192.168.1.130'
),我得到一个socket.error: [Errno 99] Cannot assign requested address
。没有其他服务使用该端口,我尝试过不同的端口,但行为没有改变。如何将我的套接字配置为只接收来自特定地址的数据包?在
首先,让我们来处理您看到的错误。}(所有本地接口的通配符)。因此,当您指定一个不是运行
.bind()
将套接字的本地端命名,而不是远程。所以主机部分必须引用本地计算机(例如,'localhost'
,'127.0.0.1
,'192.168.1.194'
,或{.bind()
的机器的本地地址时,您会得到一个错误。在第二,没有办法“配置我的套接字以仅接收来自特定地址的数据包”。作为替代,您可以使用从
.recvfrom()
返回的地址来忽略您不关心的数据。在相关问题 更多 >
编程相关推荐