分类: LINUX
2009-11-08 21:58:34
|
|
二。(以下假定第四个参数flags为0,同时假定套接字sockfd的发送缓冲的长度足够大)
1.send函数中,第三个参数nbytes:指明实际要发送的数据的字节数。
例如:char buf[5];
send(sockfd, buf, 10, 0);
尽管buf长度为5个字节,但发送给对端的数据为 &buf[0] 开始之后10个字节,即使这10个字节全部为‘\0’。在接收端,recv函数可以把这10个'\0'全部接收到(当然recv 的buffer>=10)。
2.这个时候,在另一端,recv(sockfd,buf, len, 0);
buf能接收的长度最大为len(包括len)。接收缓冲区中'\0'后面的数据也可以正常接收。
注意,在调用recv前,最好将buf清空, recv函数不会在接收到的数据后面添加结束字符'\0'。