热情软件屋

 

如何使用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协议没有数据边界,即一个发出的数据可能会在多次接收中才能全部接收完,而且多次发出的少量数据收可能在一次接收中全部收到了,因此得由你的程序来确定数据的边界(程序协议)。

此问题由王宏启回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio