读书人

socket中的send以及rec函数解决方案

发布时间: 2012-02-06 15:52:45 作者: rapoo

socket中的send以及rec函数
int send (
SOCKET s,
const char FAR * buf,
int len,
int flags
);

请问send函数每次最多可以发送多少数据?是int的最大值吗?



[解决办法]
不是, send 有不指定长度的,有指定长度的。
int send (
SOCKET s, //连路
const char FAR * buf, //buffer 内容
int len, //buffer len
int flags //不知道
);

函数 int 只是表示发送成功失败的返回值,不表示 多长

像你这个就是 有buffer 就发送
recv到的数据流可能是断断续续的,你要把他们放在一起然后解码。
[解决办法]
Send分为阻塞和非阻塞,阻塞模式下,如果正常的话,会直到把你所需要发送的数据发完再返回;非阻塞,会根据你的socket在底层的可用缓冲区的大小,来将你的缓冲区当中的数据拷贝过去,有多大缓冲区就拷贝多少,缓冲区满了就立即返回,这个时候的返回值,只表示拷贝到缓冲区多少数据,但是并不代表发送多少数据,同时剩下的部分需要你再次调用send才会再一次拷贝到底层缓冲区。

读书人网 >C语言

热点推荐