我想知道当传递给send()
的大小增加时,TCP / IP连接会发生什么。
在简单的TCP / IP连接中(默认属性,没有TCP / IP没有修复的错误),是否保证send()
中传递的大小可能是recv()
中的大小,也许达到一定限度?如果是,可以确定此限制吗?
答案 0 :(得分:2)
每个send()发送的数据大小可能与每个recv()不匹配,因为接收方不知道消息的大小。例如:100字节的消息可以10个块或100个字节的单个镜头发送。
关于问题的第二部分,可以通过简单的调用确定最大发送缓冲区大小:
int sockbufsize = 0; size = sizeof(int); getsockopt(skt,SOL_SOCKET,SO_SNDBUF,(char *)& sockbufsize,& size); // skt是套接字描述符
答案 1 :(得分:2)
不,这不能保证。 TCP是一种流协议,它的套接字接口只保证字节流以正确的顺序传输而没有错误,仅此而已。当然,由于它保证了所有数据的正确发送,所发送的总字节数将是接收的总字节数。