我在c++
的本地主机上编写了客户端和服务器之间的一个简单的tcp/ip
连接。它通过tcp/ip发送一个数组unsigned char
。该数组的大小如下:关于tcp连接的C++限制数据
unsigned char *bytes = (unsigned char*)malloc(sizeof(unsigned char)*96000000);
//array is filled
然而,当我写插座
n = write(sockfd,bytes,96000000);
if(n<0){
cout << "error writing"<< endl;
exit(1);
} else{
cout << "bytes written " << n <<endl;
}
写入字节(n
变量),其标准输出打印出是5196978
而不是数目对正如我所料,96000000
。为什么?我可以在TCP /IP
连接中写入的字节数有限制吗?我怎么解决这个问题?
所以我要循环也是在服务器端,而我读? –
@ L.Joe服务器端有点不同 - 你可以要么* *循环或 - 在支持它的实现方式 - 使用'MSG_WAITALL'标志,请参阅['recv'](http://linux.die.net/人/ 2/RECV)。 –