随笔分类 -  linux网络编程

摘要:通过两种方式可以关闭一个socket:close和shutdown。直接调用close关闭socket存在以下两个问题:1. close只是将socket 描述字的访问计数减1,仅当描述字的访问计数为0时,才真正的关闭socket。2.close终止了数据传输的两个方向:读与写。tcp管道是全双工的,有时候我们仅仅是想通知另一端我们已经完成了数据的发送,但还想继续接收另一端发送过来的数据,在这种情况下调用close关闭socket是不合适的。 shutdown可以解决上面关于close的两个问题,shutdown系统调用如下:#include /* 以how指定的方式关闭socket *... 阅读全文

posted @ 2013-09-21 20:45 黑猫警长V5 阅读(664) 评论(0) 推荐(0)

摘要:I/O复用:当一个或多个I/O条件满足时,我们就被通知到,这种能力被称为I/O复用。1.I/O复用的相关系统调用 posix的实现提供了select、poll、epoll两类系统调用以及相关的函数来实现I/O复用。select以及相关联的函数如下所示:#include /* 功能:监听多个fd,等待指定的fd指定的事件发生或者超时。 * nfds: 最大描述符加1。 * readfds:监听读fd集合。 * writefds:监听写fd集合。 * exceptfds:监听出错fd集合。 * timeout:超时时间,null-select一直阻塞直到指定时间发生,0-select不阻塞立... 阅读全文

posted @ 2013-09-21 18:05 黑猫警长V5 阅读(437) 评论(0) 推荐(0)

摘要:接触unix网络编程一年多了,偶尔用户态进程表现出一些不能理解的现象,因此将《TCP/IP协议卷1》TCP协议相关的章节通读了一遍,总结了一下相关的知识点。1.TCP数据报格式 TCP封装在IP数据报中,如下:------------------------------------------------------------------------------------- |----IP首部(20字节)----||----TCP首部(20字节)||----TCP选项----||----TCP数据----| TCP数据包首部的格式如下: |--------16位源端口号----... 阅读全文

posted @ 2013-09-19 22:19 黑猫警长V5 阅读(381) 评论(0) 推荐(0)

摘要:第二部分介绍了基于多进程模型的回射服务器的实现,对于每一个客户请求服务器端创建一个子进程来处理和响应客户的请求。最后提到了,服务器主进程没有对子进程的结束进行处理,没有捕捉SIGCHLD信号,导致子进程结束后变成了僵尸进程,仍然存在于系统,僵尸进程将消耗内核资源。接下来总结了linux 系统信号处理相关的知识点,并对第二部分的回射服务器程序完成,增加对SIGHLD信号的处理,避免子进程成为僵尸进程。 1.linux信号处理基本知识 信号是发生某件事时对进程的通知,信号有时称为软中断。除了SIGKILL和SIGSTOP信号外,其他的信号都可以注册自己的信号处理函数,当进程收到该信号时将自... 阅读全文

posted @ 2013-09-19 22:16 黑猫警长V5 阅读(458) 评论(0) 推荐(0)

摘要:写一个服务器端程序很简单,但是写好一个服务器端程序并不简单,需要考虑到信号处理、性能、稳定性以及日志等很多问题。参考unp编程这本书,以一个回射服务器为例,通过不断的完善这个回射服务器程序,来学习如何编写一个性能、稳定性以及可维护性良好的服务器程序。 1.首先给出客户端程序代码,客户端程序相对要考虑的东西较少,比较简单(引用UNP示例代码):int main(int argc, char **argv){ int sockfd; struct sockaddr_in servaddr; if (argc != 2) ... 阅读全文

posted @ 2013-08-18 21:01 黑猫警长V5 阅读(452) 评论(0) 推荐(0)

摘要:接触网络编程一年多了,最近在系统的学习vnp两本书,对基础知识做一些总结,希望理解的更透彻清晰,希望能有更多的沉淀。1.套接口地址 针对IPv4和IPv6地址族,分别定义了两种类型的套接口地址:sockaddr_in和sockaddr_in6,两种套接口地址结构如下所示: /* IPv4地址族套接口地址结构 */ struct in_addr { in_addr_t s_addr; /* IPv4地址,网络序存储 */ } struct sockaddr_in { uint8_t sin_len; /* 结构体大小... 阅读全文

posted @ 2013-08-11 20:16 黑猫警长V5 阅读(536) 评论(0) 推荐(0)

导航