ITPub博客

首页 > IT职业 > IT职场 > Linux 的 Socket IO 模型趣解

Linux 的 Socket IO 模型趣解

IT职场 作者:nike_hao 时间:2021-09-09 09:17:18 0 删除 编辑

前言

之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型;

老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。
他们的信会被邮递员投递到他们小区门口的收发室里。这和Socket模型非常类似。

下面就以老陈接收信件为例讲解linux的 Socket I/O模型。

一、同步阻塞模型

老陈的女儿第一次去外地工作,送走她之后,老陈非常的挂心她安全到达没有;
于是老陈什么也不干,一直在小区门口收发室里等着她女儿的报平安的信到;

这就是linux的同步阻塞模式;

在这个模式中,用户空间的应用程序执行一个系统调用,并阻塞,
直到系统调用完成为止(数据传输完成或发生错误)。

Socket设置为阻塞模式,当socket不能立即完成I/O操作时,进程或线程进入等待状态,直到操作完成。

如图1所示:

图片描述

/*
 * brief
 * tcp client
 */#include #include #include #include #include #define SERVPORT 8080#define MAXDATASIZE 100int main(int argc, char *argv[]){  int sockfd, recvbytes;  char rcv_buf[MAXDATASIZE]; /*./client 127.0.0.1 hello */
  char snd_buf[MAXDATASIZE];  struct hostent *host;             /* struct hostent
                                     * {
                                     * char *h_name; // general hostname
                                     * char **h_aliases; // hostname's alias
                                     * int h_addrtype; // AF_INET
                                     * int h_length; 
                                     * char **h_addr_list;
                                     * };
                                     */
  struct sockaddr_in server_addr;  if (argc 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3643/viewspace-2801746/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-14

  • 博文量
    84
  • 访问量
    668