【 在 confinement 的大作中提到: 】
: 我不知道,反正就是调用socket 那一套, send 发送, recv 接收。昨天你们说了之后我还以为是不是我接收端的buff整的太小了,今天又试了一下,send 这端是不管的,一下发出去,recv(connction, buffer, recv_size, 0) 这个buffer,和recv_size 都搞大了,结果还是分片呀,比如send一个几万字节的buffer,recv函数一次可能只接收了数千个字节,需要调N次才能接收完
: 请问要怎么样一次发送一次接收?
:
本来就是需要循环接收的。每次接收多少字节并不确定。
自己写个循环接收程序。
另外,发送也不保证一次发完,也需要循环。
所以通常都需要自己搞一个程序。
while(bcount<n){
if((br=read(socket,buf,n-bcount))>0){
bcount+=br;
buf+=br;
continue;
}
if(fflag==-1 && errno==EAGAIN) return TIMEOUTERR;
if(br<=0 && errno && errno != EAGAIN){
if(errno!=ECONNRESET)
ShowLog(1,"%s:br=%d,err=%d,%s",__FUNCTION__,br,errno,strerror(errno));
break;
}
}
--
修改:ylh1969 FROM 221.221.46.*
FROM 221.221.46.*