send 函数的问题 我分配了一个很大的缓冲区100k,send 函数能不能够把它发送完,是不是send返回值是100k,就证明一定发送成功?如果内存少于100k怎样分配缓冲? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 单次发送一般为1K左右,广域网我做过测试。更改发送缓冲区不代表可以增加一次发送的字节数,两者没有太大的联系。缓冲区只是用来排队等待要发送的包。send函数返回值为多少,代表你发送了多少字节。如果要发送更多的字节,你把所有的发送都写成循环发送。(这是个好习惯)int iSend //要发送的字节数char *pb //要发送的缓冲区int j = 0;for(;;){ int r = send(skt, pb+j, iSend-j, 0); if (r == SOCKET_ERROR) return; j += r; if(j == iSend) break;} 如果WSAGetLaseError没有返回错误,send的返回值等于你要发送的数据大小就可以认定你发送成功。但不要指望那么大小的数据一次调用send就能成功,要象楼上那样用循环。因为局域网帧和IP包大小,网络带宽都限定了发送数据的能力,所以要用循环。 忽然有一个人add我msn,然后问我的个人主页有没有备案 如何得到CERICHEDIT某一行有多少个字了? 为什么域名大多数能够解析为IP,而IP很少能够被反解析成域名 用ShellExecuteEx执行程序怎么总是说路径不对呢 如何在WINDOWS显示属性高级属性页中添加自定义属性页 怎么抓到用户按alt+Backspace键 屏保SDK框架(用不用scrnsave.lib都可) 门诊咋这样?散分 ncb opt都是什么文件? recvfrom的参数buf为什么是char FAR *型的 调试问题? 文件读写出现的问题,已解决就是不知道为什么,请指教
更改发送缓冲区不代表可以增加一次发送的字节数,两者没有太大的联系。缓冲区只是用来排队等待要发送的包。
send函数返回值为多少,代表你发送了多少字节。
如果要发送更多的字节,你把所有的发送都写成循环发送。(这是个好习惯)int iSend //要发送的字节数
char *pb //要发送的缓冲区
int j = 0;
for(;;)
{
int r = send(skt, pb+j, iSend-j, 0);
if (r == SOCKET_ERROR) return;
j += r;
if(j == iSend) break;
}