![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
smile_sambery
这个作者很懒,什么都没留下…
展开
-
linux网络编程之Socket编程
(1)socket套接字 1)在linux环境下,socket用于表示进程间网络通信的特殊文件类型,其本质是内核借助缓冲区形成的伪文件(不占磁盘空间,除此之外还有二进制文件,管道,字符文件)。 2)伪文件也可以像文件一样的操作(读写),区别在于管道用于本地进程间的通信,套接字多用于网络进程间数据的传递。 3)在T...原创 2018-09-07 21:31:37 · 177 阅读 · 0 评论 -
linux网络编程之多路I/o转接服务器select
(1)多路IO转接服务器也叫做多任务IO服务器,其主要思想是不再由程序自己监听客户端连接,取而代之的是由内核替应用程序监视文件,具体实现模型如图所示: 当客户端请求和服务器连接时,内核接收到连接指令,告诉给服务器,服务器和客户端建立连接即可(不需要执行accept等待阻塞的时间)。当客户端请求读命令时,内核接收到到命令,服务器直接读取客户端的数据(不需要执行read等待...原创 2018-09-13 10:15:56 · 235 阅读 · 0 评论 -
linux网络编程之TCP三次握手和四次挥手
1.在TCP连接的过程中,有三个阶段,分别是建立连接,传递数据和断开连接,通讯时序图如下所示: 2.结合TCP数据报格式分析建立连接的三次握手 1)首先客户端发送一个带有SYN标志的TCP报文给服务器端,询问服务器端是否可以通信。其中32位序号为1000,数据大小为0,数据报文的最大...原创 2018-09-10 21:56:35 · 247 阅读 · 0 评论 -
Linux操作系统之简易实现server/client
1.首先将出错处理封装成函数,具体封装思想:是在底层函数的基础上将首字母大写(方便在编程中查找函数文件的manpage,而不需要使用命令,直接用shift+k),然后调用底层库函数并考虑出错处理,具体函数如下: 由于accept,read,write函数为慢速系统调用函数,当被信号中断时,可以执行默认操作或重启; ...原创 2018-09-10 21:28:00 · 1349 阅读 · 0 评论 -
linux网络编程之通信协议格式
好文参考:《网路传输的三张表:MAC地址表,ARP缓存表和路由表》http://www.cnblogs.com/clovn/p/4911212.html(1)数据包封装 传输层及其一下的机制由内核决定,主要负责通讯的具体细节;应用层由用户进程提供,主要负责对通讯数据的含义进行解释。应用层数据通过协议栈发送到网络上,为了保证数据能够被接收,需要在每层协议之前加一个数据首部作...原创 2018-09-07 14:23:35 · 1110 阅读 · 0 评论 -
linux网络编程之网络应用设计模式、分层模型、通信过程
(1)网络协议 可以理解为规则,其中包含着数据传输和数据的解释。 典型的协议:传输层:tcp/udp协议,应用层:http/ftp协议,网络层:ip协议,网路接口:arp协议(2)网络应用设计模式 1)C/S模型:客户端和服务器模型,需要在客户两段各自部署客户端和服务器来完成数据通信。 ...原创 2018-09-07 10:23:00 · 342 阅读 · 0 评论 -
linux网路编程之TCP状态转换及端口复用
(1)TCP状态转换图 其中图中分为三种状态:实线代表的主动发起连接,虚线代表的被动发起连接,细实线代表的可以双向发起连接的状态。主动发起连接方状态变化:1)主动发起连接的一方发送SYN标志位,进入SYN_SENT状态,等待接收被发起连接方发送ACK应答和数据包序号,接收到ACK应答后,同时向被被发起连接方发送ACK应答,表示数据已经接收到,同一发起连接,此时进...原创 2018-09-12 09:12:12 · 1229 阅读 · 0 评论 -
linux网路编程之多线程并发服务器
1)在使用进程模型开发服务器过程中考虑以下问题 (1)调整进程内最大文件描述符上限 (2)线程如有共享,考虑线程同步 (3)客户端线程退出时,做退出处理(线程分离,自动回收) (4)系统负载,随着链接客户端增加,导致其他线程不能及时得到CPU2)多线程并发服务器程序 ...原创 2018-09-11 21:18:56 · 404 阅读 · 0 评论 -
linux网路编程之多进程并发服务器
1)使用多进程并发服务器考虑的因素: (1)父进程描述最大文件描述符的个数(父进程需要关闭accept返回的新文件描述符) (2)系统内可创建进程的个数(与内存大小相关) (3)进程创建过多是否降低整体服务性能2)多进程创建并发服务器思想 (1)父进程创建子进程,每个子进程相当于一个客户端 (2)子进程实现每个客户端的读写数...原创 2018-09-11 20:11:23 · 327 阅读 · 0 评论 -
linux网络编程之多路I/O转接服务器poll函数
(1)poll函数 头文件:#include<poll.h> int poll(struct pollfd*fds, nfds_t nfds,int timeout); struct pollffd{ ...原创 2018-09-13 11:38:02 · 187 阅读 · 0 评论