我有一个python tcp服务器,它接受连接并生成一个长度在(0,1M)字符之间的随机字符串,另一方面,我有一个c客户端,它需要监听该套接字并读取字符串,并将其转换为与服务器返回的字符串长度相同的单个字符。
int receiver(int soc_desc, char * buffer)
{
char *arr = (char *)malloc(sizeof(char));
unsigned int received , total_received;
while (1)
{
memset(arr, 0, MAX); // clear the buffer
if ( received = recv(soc_desc, arr , MAX, 0) < 0)
{
break;
}
else
{
total_received += received;
}
}
printf("%s\n",arr);
return received;
}
// soc_desc is the socket descriptor
// buffer is the buffer that will hold the final output
我能想到的唯一方法是使用malloc
来读取从服务器返回的数据块,但我在尝试解决这个问题时遇到了困难,当客户端完成从服务器接收数据时,我需要将char
指针数组转换为单个字符
2条答案
按热度按时间e1xvtsh31#
我找到了一种方法来做到这一点,但这是没有足够的测试,肯定会导致内存问题
92vpleto2#
重组网络数据,特别是来自TCP的数据,可能会变得很棘手。下面的代码是未经测试的,当然不能解释所有的意外情况,但希望是沿着正确的道路,你需要做的。
参见Do I cast the result of malloc?