udp侦听器从两个不同的源端口接收数据包?

2024-05-16 23:53:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有件事让我很困惑。在

我有作业要做,先生只是想找个寄信人_udp.py文件和倾听者_udp.py文件. 在

但是他想要一些我真的无法理解的东西。在

他说

Blockquote

udp协议_接收器.py应该监听本地环回(127.0.0.1)端口5444并打印出它在端口上接收到的消息。它应该打印出发送方地址和发送方端口号(如果可能)。udp协议_发件人.py应该将您的名字从端口号5566发送到本地环回(127.0.0.1)并从端口5567发送您的姓氏。在

Blockquote

我写了发送方和接收方,但接收方根本不接收数据包。在

这是接收方代码:

import socket
import sys

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind the socket to the port
server_address = ('localhost', 5444)
print(sys.stderr, 'starting up on %s port %s' % server_address)
sock.bind(server_address)


while True:
    print(sys.stderr, '\nwaiting to receive message')
    data, address = sock.recvfrom(4096)

    print(sys.stderr, 'received %s bytes from %s' % (len(data), address))
    print(sys.stderr, data)

和发送方代码

^{pr2}$

实际上,我知道有了这段代码,不可能将数据包发送到5444,客户端将数据包发送到不同的端口;并且在这些端口上没有侦听器。 我不明白他对这个问题是什么意思,也许他让我们给每个包分配不同的源端口?那么,有没有什么方法可以用python实现呢,我找不到任何解决方案?在

如有任何帮助,将不胜感激。在


Tags: 文件端口代码pydataserveraddressstderr
1条回答
网友
1楼 · 发布于 2024-05-16 23:53:53

您的代码应该如下所示:

接收人:

import socket
import sys

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind the socket to the port
server_address = ('localhost', 5444)
sock.bind(server_address)
print('starting up on %s port %s' % server_address)

while True:
    print('\nwaiting to receive message')

    data, address = sock.recvfrom(4096)
    print('received %s bytes from %s' % (len(data), address))
    print(data)`enter code here`

发件人:

^{pr2}$

在发送数据包时,一定要发送到接收方的ip地址和端口。 所以,如果接收器监听端口5444,发送到那个端口。在

相关问题 更多 >