如何发送具有确切大小的UDP数据包?

时间:2015-05-03 00:50:07

标签: python sockets udp

我使用UDP在Python中有一个简单的客户端/服务器程序。我需要发送一个包含大小正好为120字节的消息和报头的数据包。 (数据包总大小为120 + sizeof(header)。)

我该怎么做? MESSAGE的内容应该是什么?

我的代码:

MESSAGE = "?120B?"

sock = socket.socket(socket.AF_INET, 
                     socket.SOCK_DGRAM) 
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

1 个答案:

答案 0 :(得分:0)

您可以使用ljust方法将字符串填充为固定长度:

>>> MESSAGE.ljust(120)
'?120B?                                                                                                                  '

但是如果字符串的长度超过120,ljust不会截断它。你可以这样做:

MESSAGE.ljust(120)[:120]

上面的示例将默认使用空格填充字符串。您可以选择指定自定义填充字符(例如空字符):

MESSAGE.ljust(120, '\0')[:120]

看起来你想用空字符填充字符串,但是请记住,如果没有给出长度,接收器可能会在到达第一个空字符时剪掉字符串。我猜你打算在标题中存储字符串的长度,如果你这样做,你就不应该有任何问题。