recvfrom用于存储在2D Char数组中

时间:2017-06-06 07:18:02

标签: udp recvfrom

尝试使用recvfrom函数

在2D Char数组中收集1261 UDP数据包
define RxBuffSize   1514
define TotalPacket  1261

char    RxBuff[RxBuffSize]      =   {0};

我尝试使用的代码是:

for (Count =0; Count <= TotalPacket; Count++)
{
    recvfrom(sock, RxBuff[Count],RxBuffSize,0,(struct sockaddr *)&Sender_addr, &Sender_addrlen);        
}

或者不知道如何开始只想将所有1261个数据包存储到RxBuff中,以便我可以通过其数据包编号访问数据包数据,以便通过数据包编号从数据包中获取数据。

printf("%x ",Payload[packetno][data]);

1 个答案:

答案 0 :(得分:0)

您需要足够的空间来连续存储所有数据包。您可以静态分配2D数组

char RxBuff [RxBuffSize][1261];

或使用calloc

char *RxBuff = calloc(RxBuffSize, 1261);

然后像你的问题一样循环回收1261次:

for (Count = 0; Count <= TotalPacket; Count++)
{
    recvfrom(sock, RxBuff[Count],RxBuffSize,0,(struct sockaddr *)&Sender_addr, &Sender_addrlen);
}