如何使用recv/send接受或发送比指定缓冲区大的数据包
编号:QA002482
建立日期: 2000年1月23日 最后修改日期:2000年1月23日
所属类别:
zjsowin:
操作系统:windows98/NT
编程工具:VC++/C++ Builder
问题:编写SOCKET程序时,如何使用recv/send接受或发送比指定缓冲区大的数据包?
比如:
char buf[1024];
ret=recv(MySocket, (char FAR *)buf, sizeof(buf), 0);
当要发送的数据大于1024bytes时,如何控制程序?要用到Out Of Band吗?
回答:
发送时如果数据量太大,系统或网络会自动把数据分解成小块,如果你想自己把它分解也未尝不可,即把大量数据分成多次发送。至于接收方面,TCP协议没有数据边界,即一个发出的数据可能会在多次接收中才能全部接收完,而且多次发出的少量数据收可能在一次接收中全部收到了,因此得由你的程序来确定数据的边界(程序协议)。
此问题由王宏启回答。
| |
|
|
| |
|
|