用C实现的UDP发送代码,UDP数据16字节可以正常发送接收,一旦小于16字节便提示发送失败。
查阅了UDP协议并没有最小长度方面的限制,也用NetAssist网络助手软件发了数个字节的UDP包,抓包结果正常。但这段代码就是无法发送小于16字节的数据。
开发环境是CLion+minGW7.3.0,系统Win7专业版。
#include <winsock2.h>
//发送UDP数据
int udp_send() {
sclient_PET = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sin_pet.sin_family = AF_INET;
sin_pet.sin_port = htons(4001);
int len;
//传送数据字节数
//发送数据定义
char recvData[255];
auto UDPData_send = (char*)&recvData;
//发送测试帧
UDPData_send[0] = 0x88;
UDPData_send[1] = 0x18;
UDPData_send[2] = 0xFE;
UDPData_send[3] = 0x10;
UDPData_send[4] = 0x07;
UDPData_send[5] = 0x00;
UDPData_send[6] = 0x0A;
UDPData_send[7] = 0x00;
UDPData_send[8] = 0x0F;
UDPData_send[9] = 0x00;
UDPData_send[10] = 0x1E;
UDPData_send[11] = 0x00;
UDPData_send[12] = 0x32;
char *sendData = (char*)UDPData_send;
len = 15;//字节数
sin_pet.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int t = sendto(sclient_PET, sendData, len, 0, (sockaddr * ) & sin_pet, len);
if (-1 == t)
printf("UDP Send FAILURE!\n");
}