上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页
摘要: 当服务一个客户请求可能花费较长时间时,我们并不希望整个服务器被单个客户长期占用,而是希望同时服务多个客户 unix中编写并发服务器程序最简单的方法就是fork一个子进程来服务每个客户 典型的并发服务器程序轮廓 当一个连接i建立时,accpt返回,服务器接着调用fork,然后由子进程服务客户,父进程则 阅读全文
posted @ 2016-04-03 19:54 ailx10 阅读(212) 评论(0) 推荐(0) 编辑
摘要: fork函数调用一次,返回2次 它在调用进程中返回一次,返回值是新派生进程的进程ID号 在子进程又返回一次,返回值是0 因此,返回值本身告诉当前进程的子进程还是父进程 fork在子进程返回0而在父进程返回进程ID的原因在于: 任何子进程只有一个父进程,而子进程总是可以通过调用getppid取得父进程 阅读全文
posted @ 2016-04-03 17:15 ailx10 阅读(403) 评论(0) 推荐(0) 编辑
摘要: accept函数由TCP服务器调用,用于从以完成连接队列队头返回下一个以完成连接 如果以完成队列为空,那么进程被投入睡眠(假定套接字为默认的阻塞方式) int acceptn ( int sockfd, struct sockaddr * cliaddr,socklen_t * addrlen); 阅读全文
posted @ 2016-04-03 16:07 ailx10 阅读(2560) 评论(0) 推荐(0) 编辑
摘要: listen函数仅仅由TCP服务器调用,它做2件事: 1)当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字 listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求 调用listen导致套接 阅读全文
posted @ 2016-04-03 15:17 ailx10 阅读(423) 评论(0) 推荐(0) 编辑
摘要: bind函数把一个本地协议地址赋予一个套接字 对于网际协议,协议地址是32位的IPv4地址或128位的IPv6与16位的TCP或UDP端口号的组合 int bind ( int sockfd, const struct sockaddr * myaddr ,socklen_t addrlen); b 阅读全文
posted @ 2016-04-03 14:43 ailx10 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 注意: connect函数导致当前套接字从CLOSE状态(该套接字自从由socket函数创建以来一直所处的状态)转移到SYN_SENT状态 若成功则再转移到ESTABLISHED状态, 若connect失败则该套接字不再可用,必须关闭,我们不能对这样的套接字再次调用connect函数 当循环调用函数 阅读全文
posted @ 2016-04-03 13:41 ailx10 阅读(290) 评论(0) 推荐(0) 编辑
摘要: TCP客户用connect函数来建立与TCP服务器的连接 int connect (int sockfd, const sockaddr * servaddr, socklen_t addrlen); sockfd是由socket函数返回的套接字描述符 servaddr指向套接字地址结构的指针 ad 阅读全文
posted @ 2016-04-03 13:30 ailx10 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 为了执行网络IO,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型 int socket(int family,int type,int protocol); 其中,family参数指定协议簇,type参数指明套接字类型,protocol参数一般为0 TCP是一个字节流协议, 阅读全文
posted @ 2016-04-03 12:54 ailx10 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 字节流套接字上的read和write函数所表现的行为不同于通常的文件IO 字节流套接字上调用read或write输入或输出的字节数可能比请求的数量少,然而这不是出错的状态 这个现象的原因在于内核中用于套接字的缓冲区可能已经达到了极限 此时需要的是调用者再次调用read或write函数,以输入或输出剩 阅读全文
posted @ 2016-04-02 21:31 ailx10 阅读(361) 评论(0) 推荐(0) 编辑
摘要: inet_ntop的一个基本问题是:它要求调用者传递一个指向某个二进制地址的指针, 而该地址通常包含在一个套接字地址结构中,这就要求调用者必须知道这个结构的格式和地址簇, 为了使用这个函数,我们必须为IPv4编写如下代码: struct sockaddr_in addr; inet_ntop(AF_ 阅读全文
posted @ 2016-04-02 21:28 ailx10 阅读(627) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页