問題就是在linux下c++用socket通信 使用send函數(shù)發(fā)送數(shù)據(jù) 如何發(fā)送超大數(shù)據(jù)大小有1~2G 正常發(fā)送100+M數(shù)據(jù)都沒問題 上G就不行了?? 怎么解決 求解釋 求代碼 謝謝各位了
2 回答

胡說叔叔
TA貢獻1804條經(jīng)驗 獲得超8個贊
怎么個不行法?你調(diào)用send函數(shù),網(wǎng)絡(luò)底層會自動按照你所指定的發(fā)送窗口大小來分包,所以一般也可以發(fā)送成功的,只不過 如果自己不在網(wǎng)絡(luò)層組織數(shù)據(jù)包的話,效率會有問題。

拉丁的傳說
TA貢獻1789條經(jīng)驗 獲得超8個贊
不要一次發(fā)送,分成多次發(fā)送
int sendbuf(int socket, char *buffer , int sendlen )
{
int len=0;
int one=1024 ;
do
{
if ( sendlen-len > 1024 )
one=1024;
else
one=sendlen-len ;
send(socket, buffer, one , 0);
len += one ;
buffer += one ;
}while ( len < sendlen ) ;
return len ;
}
添加回答
舉報
0/150
提交
取消