- 论坛徽章:
- 0
|
系统是redhat linux as/4
下面是我写的一段测试代码
- void
- sendMsg(int sockfd)
- {
- int sendNumBytes, i;
- char sendBuf[5];
-
- bzero(sendBuf, sizeof(sendBuf));
- fgets(sendBuf, sizeof(sendBuf) - 1, stdin);
- sendNumBytes = 0;
- for(i = 0; ; i++)
- {
- sendNumBytes += send(sockfd, sendBuf + sendNumBytes, 10 - sendNumBytes, 0);
- printf("loop %d : %d bytes send\n", i, sendNumBytes);
- if(sendNumBytes == 10)
- break;
- }
- }
复制代码
使用这段代码的结果是
[study@server socket]$ ./myclient
a /*输入a后回车*/
loop 0 : 10 bytes send
[study@server socket]$
我缓冲区定义成5个字节大小,send函数中试图发10个字节。为什么结果是一次就send了10个字节?发完了sendBuf中的5字节后,剩余的5字节是哪里来的呢?
 |
|