Chinaunix
标题:
UNP 读写套接字背后是怎样的?
[打印本页]
作者:
729926317
时间:
2011-12-01 15:11
标题:
UNP 读写套接字背后是怎样的?
开始看了一点UNP,看完了那个最简单的回射程序之后有了一些疑惑的地方,跑来这请教下大家。
在tcp链接建立之后
client从stdin读出数据写到套接字中,然后再从套接字中读取数据;
while (Fgets(sendline, MAXLINE, fp) != NULL) {
Writen(sockfd, sendline, strlen(sendline));
if (Readline(sockfd, recvline, MAXLINE) == 0)
err_quit("str_cli: server terminated prematurely");
Fputs(recvline, stdout);
}
复制代码
server从套接字读取数据再些回到套接字中。
while ( (n = read(sockfd, buf, MAXLINE)) > 0)
Writen(sockfd, buf, n);
复制代码
我的疑问是在client执行Writen之后,是不是就报这些数据封装成一个TCP报文段发送给server?
那么server的read是不是读取一个TCP报文段之后就停止了(假设这个TCP报文段大小小于MAXLINE)?
有没有可能server的一次read就读取了多个TCP报文段中的数据?
作者:
crazyhadoop
时间:
2011-12-01 15:43
read读取的就是数据流,不知道是多少个数据包。
作者:
729926317
时间:
2011-12-01 15:47
回复
2#
crazyhadoop
恩,我也就是不知道会不会把两个甚至更多的TCP报文段中的数据合并在一起一次给read了。
作者:
crazyhadoop
时间:
2011-12-01 16:04
回复
3#
729926317
会,你每次写10个,写3次,可以一次就读30个出来。
作者:
729926317
时间:
2011-12-01 16:27
回复
4#
crazyhadoop
那如果换成使用UDP,recvfrom方法是不是每次都只能接受一个UDP数据报?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2