浅墨浓香

想要天亮进城,就得天黑赶路。
随笔 - 743, 文章 - 16, 评论 - 87, 阅读 - 53万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  Linux应用与网络编程

摘要:5. 守护进程的介绍 5.1 守护进程 (1)守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,在系统关闭时终止。 (2)所有守护进程者都以超级用户(用户ID为0)的优先权运行。 (3)守护进程没有控制终端 (4)守护进程的父进程都是init进程 5.2 守护进程的编程步骤 阅读全文

posted @ 2017-04-12 16:51 浅墨浓香 阅读(470) 评论(0) 推荐(0) 编辑

摘要:4. 事件驱动模型:epoll 4.1 epoll简介 (1)epoll是Linux内核为处理大批量的socket而改进的poll,相对于select/poll来说,epoll更加灵活。它使用一个文件描述符来管理多个socket。 (2)epoll之所以高效,是因为它将用户关心的socket事件存放 阅读全文

posted @ 2017-04-12 13:19 浅墨浓香 阅读(1504) 评论(0) 推荐(0) 编辑

摘要:3. I/O多路复用:select函数 3.1 I/O多路复用简介 (1)通信领域的时分多路复用 (2)I/O多路复用(I/O multiplexing) ①同一线程,通过“拨开关”方式,来同时处理多个I/O流,哪个IO准备就绪就把开关拨向它。(I/O多路复用类似于通信领域中的“时分复用”) ②通过 阅读全文

posted @ 2017-04-09 00:08 浅墨浓香 阅读(1639) 评论(0) 推荐(0) 编辑

摘要:1. 高性能I/O (1)通常,recv函数没有数据可用时会阻塞等待。同样,当socket发送缓冲区没有足够多空间来发送消息时,函数send会阻塞。 (2)当socket在非阻塞模式下,这些函数不会阻塞,如果发送/接收缓冲区没有数据时,调用会失败并设置errno为EWOULDBLOCK或EAGAIN 阅读全文

posted @ 2017-04-08 22:48 浅墨浓香 阅读(708) 评论(0) 推荐(0) 编辑

摘要:3. 广播的介绍 (1)广播 ①广播实现一对多的通信,如QQ群 ②它通过向广播地址发送数据报文实现的 (2)SO_BROADCAST选项 ①SO_BROADCAST选项控制着UDP套接字是否能发送广播数据报,选项的类型为int,非零意味着“是”。 ②注意,该选项只有UDP套接字可以使用,TCP是不能 阅读全文

posted @ 2017-04-06 15:40 浅墨浓香 阅读(428) 评论(0) 推荐(0) 编辑

摘要:2. 端口绑定和域名解析 2.1 端口绑定:SO_REUSEADDR选项 2.2 域名解析 (1)域名解析过程 (2)域名解析函数 头文件 #include <netdb.h> 函数 struct hostent* gethostent(void); struct hostent* gethostb 阅读全文

posted @ 2017-04-06 14:22 浅墨浓香 阅读(843) 评论(0) 推荐(0) 编辑

摘要:1. UDP编程模型 (1)UDP客户端服务器模型 ①客户端可以不调用bind()而直接与服务器通讯。 ②UDP是无连接的,因此服务端不需要调用accept和listen,客户端也无需调用connect函数。 (2)数据传输 ①发送数据 头文件 #include <sys/socket.h> 函数 阅读全文

posted @ 2017-04-06 11:25 浅墨浓香 阅读(414) 评论(0) 推荐(1) 编辑

摘要:7. 基于自定义协议的多线程模型 (1)服务端编程 ①主线程负责调用accept与客户端连接 ②当接受客户端连接后,创建子线程来服务客户端,以处理多客户端的并发访问。 ③服务端接到的客户端信息后,回显给客户端 (2)客户端编程 ①从键盘输入信息,并发送给服务端 ②接收来自服务端的信息 //msg.h 阅读全文

posted @ 2017-04-06 00:14 浅墨浓香 阅读(550) 评论(0) 推荐(0) 编辑

摘要:5. 自定义协议编程 (1)自定义协议:MSG (2)自定义读写函数 ①extern int write_msg(int sockfd, char* buff, size_t len); //发送一个基于自定义协议的message,发送的数据存放在buff中 ②extern int read_msg 阅读全文

posted @ 2017-04-05 22:34 浅墨浓香 阅读(408) 评论(0) 推荐(0) 编辑

摘要:4. TCP的连接和关闭过程 4.1 TCP连接的三次握手和四次挥手 (1)三次握手 ①第1次握手:建立连接。客户端发送连接请求报文段(SYN=1,sequence Number=x);然后客户端进入SYN_SEND状态,等待服务器确认。 ②第2次握手:服务器收到SYN报文段,然后对SYN报文段进行 阅读全文

posted @ 2017-04-04 22:47 浅墨浓香 阅读(508) 评论(0) 推荐(1) 编辑

摘要:1. socket套接字 (1)套接字简介 ①socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,它给应用进程提供了使用如TCP/UDP等网络协议进行网络通讯的手段。 ②Linux中的网络编程通过socket接口实现。socket是一种特殊的IO,提供对应的文件描述符。 ③一个完整的 阅读全文

posted @ 2017-03-31 13:31 浅墨浓香 阅读(416) 评论(0) 推荐(1) 编辑

摘要:4. 数据封装和IP地址 (1)数据封装 (2)IP地址 ①在TCP/IP网络中,每个主机都有唯一的地址,它是通过IP协议族实现的。 ②IP协议要求在每次与TCP/IP网络建立连接时,每台主机都必须为这个连接分配一个唯一的32位地址,因为在这个32位地址中,不但可以用来识别某一台主机,而且还隐含着网 阅读全文

posted @ 2017-03-30 22:22 浅墨浓香 阅读(413) 评论(0) 推荐(0) 编辑

摘要:1. 协议的概念 (1)计算机网络中实现通信必须有一些约定。如对速率、传输代码、代码结构、传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须约定使用共同的“语言”,这些被通信各方共同遵守的约定、语言、规则被称为协议 (3)在Internet 阅读全文

posted @ 2017-03-30 21:09 浅墨浓香 阅读(300) 评论(0) 推荐(1) 编辑

摘要:3.4 进程信号量 (1)进程信号量简介 ①本质上就是共享资源的数目,用来控制对共享资源的访问。 ②用于进程间的互斥和同步。 ③每种共享资源对应一个信号量,为了便于大量共享资源的操作引入信号量集,可对所有信号量一次性操作。对信号量集中所有操作可以要求全部成功,也可以部分成功。 ④二元(也叫双态)信号 阅读全文

posted @ 2017-03-21 13:04 浅墨浓香 阅读(278) 评论(0) 推荐(0) 编辑

摘要:3.3 共享内存 (1)共享内存简介 ①共享内存区域是被多个进程共享的一部分物理内存 ②多个进程都可把该共享内存映射到自己的虚拟内存空间。所有用户空间的进程若要操作共享内存,都要将其映射到自己虚拟内存空间中,通过映射的虚拟内存空间地址去操作共享内存,从而达到进程间的数据通信。 ③共享内存是进程间共享 阅读全文

posted @ 2017-03-20 14:41 浅墨浓香 阅读(427) 评论(0) 推荐(0) 编辑

摘要:3. 消息队列 3.1 System V IPC (1)System V IPC概述 ①Unix系统存在信号、管道和命名管道等基本进程间通信机机制。 ②System V引入了三种高级进程间的通信机制:消息队列、共享内享和信号量。 ③IPC对象(消息队列、共享内存和信号量)存在于内核中而不是文件系统中 阅读全文

posted @ 2017-03-20 10:47 浅墨浓香 阅读(444) 评论(0) 推荐(1) 编辑

摘要:1. 进程间通信概述 (1)概述 ①数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。 ②共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 ③通知事件:一个进程需要向另一个(组)进程发送消息,通知它们发生了某种事件(如进程终止 阅读全文

posted @ 2017-03-19 12:00 浅墨浓香 阅读(587) 评论(0) 推荐(1) 编辑

摘要:6. 线程和fork 6.1 多线程下的fork (1)历史包袱 ①fork与多线程的协作性很差,这是POSIX系统操作系统的历史包袱。 ②长期以来程序都是单线程的,fork运行正常,但引入线程这后,fork的适用范围大大缩小。 (2)多线程下的fork ①在多线程执行的情况下调用fork函数,仅会 阅读全文

posted @ 2017-03-16 00:07 浅墨浓香 阅读(578) 评论(0) 推荐(0) 编辑

摘要:5. 线程和信号 5.1 多线程中的信号 (1)在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别。在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来处理信号。它完全是异步的。因此,信号处理函数里有时要考虑某些函数可重入或被异步信号中断后的处理。 阅读全文

posted @ 2017-03-15 23:36 浅墨浓香 阅读(1377) 评论(0) 推荐(0) 编辑

摘要:4. 线程私有数据 (1)线程私有数据的作用 ①线程私有数据是存储和查询与某个线程相关的数据的一种机制,它希望每个线程可以独立的访问数据副本,而不需要担心与其他线程的同步访问问题。 ②进程中的所有线程都可以访问进程的整个地址空间(如全局变量),从而造成线程间使用数据的混乱,而线程私有数据可以维护基于 阅读全文

posted @ 2017-03-13 23:30 浅墨浓香 阅读(270) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示