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

Python 如何发送具有精确大小的UDP数据包?,python,sockets,udp,Python,Sockets,Udp,我有一个简单的Python客户机/服务器程序,使用UDP。我需要发送的信息包大小正好是120字节加上报头。(总数据包大小为120+sizeof(头)) 我该怎么做?消息的内容应该是什么 我的代码: MESSAGE = "?120B?" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(MESSAGE, (UDP_IP, UDP_PORT)) 将任何给定数据分成1

我有一个简单的Python客户机/服务器程序,使用UDP。我需要发送的信息包大小正好是120字节加上报头。(总数据包大小为
120+sizeof(头)

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

我的代码:

MESSAGE = "?120B?"

sock = socket.socket(socket.AF_INET, 
                     socket.SOCK_DGRAM) 
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
将任何给定数据分成120字节的数据包

将任何给定数据分成120字节的数据包

将任何给定数据分成120字节的数据包


将任何给定数据分成120字节的数据包

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

>>> MESSAGE.ljust(120)
'?120B?                                                                                                                  '
但是,如果字符串长度超过120,
ljust
将不会截断它。您可以通过执行以下操作手动执行此操作:

MESSAGE.ljust(120)[:120]
上面的示例默认情况下将用空格填充字符串。您可以选择指定自定义填充字符(例如空字符):


看起来您希望用空字符填充字符串,但请记住,如果没有给定长度,则当字符串到达第一个空字符时,接收方可能会将其截断。我猜您计划在标题中存储字符串的长度,如果这样做,您应该不会有任何问题。

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

>>> MESSAGE.ljust(120)
'?120B?                                                                                                                  '
但是,如果字符串长度超过120,
ljust
将不会截断它。您可以通过执行以下操作手动执行此操作:

MESSAGE.ljust(120)[:120]
上面的示例默认情况下将用空格填充字符串。您可以选择指定自定义填充字符(例如空字符):


看起来您希望用空字符填充字符串,但请记住,如果没有给定长度,则当字符串到达第一个空字符时,接收方可能会将其截断。我猜您计划在标题中存储字符串的长度,如果这样做,您应该不会有任何问题。

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

>>> MESSAGE.ljust(120)
'?120B?                                                                                                                  '
但是,如果字符串长度超过120,
ljust
将不会截断它。您可以通过执行以下操作手动执行此操作:

MESSAGE.ljust(120)[:120]
上面的示例默认情况下将用空格填充字符串。您可以选择指定自定义填充字符(例如空字符):


看起来您希望用空字符填充字符串,但请记住,如果没有给定长度,则当字符串到达第一个空字符时,接收方可能会将其截断。我猜您计划在标题中存储字符串的长度,如果这样做,您应该不会有任何问题。

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

>>> MESSAGE.ljust(120)
'?120B?                                                                                                                  '
但是,如果字符串长度超过120,
ljust
将不会截断它。您可以通过执行以下操作手动执行此操作:

MESSAGE.ljust(120)[:120]
上面的示例默认情况下将用空格填充字符串。您可以选择指定自定义填充字符(例如空字符):


看起来您希望用空字符填充字符串,但请记住,如果没有给定长度,则当字符串到达第一个空字符时,接收方可能会将其截断。我猜您计划在标题中存储字符串的长度,如果这样做,您应该不会有任何问题。

我不明白您在问什么。是否要发送数据包,使其精确到120字节(不包括头?@Leth0_uuuo是)。确切地我对网络交流很陌生。很抱歉问了(也许)愚蠢的问题。我不明白你在问什么。是否要发送数据包,使其精确到120字节(不包括头?@Leth0_uuuo是)。确切地我对网络交流很陌生。很抱歉问了(也许)愚蠢的问题。我不明白你在问什么。是否要发送数据包,使其精确到120字节(不包括头?@Leth0_uuuo是)。确切地我对网络交流很陌生。很抱歉问了(也许)愚蠢的问题。我不明白你在问什么。是否要发送数据包,使其精确到120字节(不包括头?@Leth0_uuuo是)。确切地我对网络交流很陌生,很抱歉问了(也许)愚蠢的问题。