UNP 读写套接字背后是怎样的?
时间:2011-12-01
来源:互联网
开始看了一点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报文段中的数据?
在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报文段中的数据?
作者: w729926317 发布时间: 2011-12-01
有可能,TCP没有消息边界,连续多个报文连成一片。
作者: qq120848369 发布时间: 2011-12-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28