+ -
当前位置:首页 → 问答吧 → UNP 读写套接字背后是怎样的?

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报文段中的数据?

作者: w729926317   发布时间: 2011-12-01

有可能,TCP没有消息边界,连续多个报文连成一片。

作者: qq120848369   发布时间: 2011-12-01