
Linux网络通信
文章平均质量分 74
朝辞暮见
关于DeepSeek、开源程序、定制办公自动化工具的学习,请大家可以关注抖音号:1754045136(树懒君)
展开
-
I/O多路复用技术(multiplexing)
原文链接:链接首先,要从你常用的IO操作谈起,比如read和write,通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。(图片来源:http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch06lev1sec2...转载 2018-08-18 16:37:14 · 831 阅读 · 0 评论 -
并发服务器(对服务器模型的补充)
原文链接在网络通信过程中,服务端通常需要处理多个客户端。由于多个客户端的请求可能会同时到来,服务器端可采用不同的方法来处理。总体上来说,服务器端可采用两种模型来实现:循环服务器模型和并发服务器模型。 循环服务器模型是指服务器端依次处理每个客户端,直到当前客户端的所有请求处理完毕,再处理下一个客户端。这类模型的优点是简单,缺点显而易见。特别是TCP循环服务器模型,由于必须先处理...转载 2018-07-23 10:30:27 · 520 阅读 · 0 评论 -
网络超时检测
1. 网络超时在网络通信中。很多操作会使进程阻塞,如TCP套接字中的recv/accept/connect,如UDP套接字中的recvfrom。为了避免进程在没有数据时无限制的阻塞,以下有三种方法设置网络超时检测。 2. 网络超时检测三种方法1)法1设置socket的属性SO_RCVTIMEO示例代码如下:struct timeval tv; tv.tv_sec = 5; //设置5秒时间tv.t...原创 2018-06-03 21:17:32 · 1976 阅读 · 0 评论 -
服务器模型
1. 在网络程序里面,通常都是一个服务器处理多个客户机。为了处理多个客户机的请求,服务器端的程序有不同的处理方式。目前最常用的服务器模型:1)循环服务器:循环服务器在同一个时刻只能响应一个客户端的请求2)并发服务器:并发服务器在同一个时刻可以响应多个客户端的请求 2. 循环服务器模型无论是TCP循环服务器还是UDP循环服务器,其本质就是一个while循环,这种模型低效也很少使用,本博文不再叙述。 ...原创 2018-06-03 20:31:51 · 1328 阅读 · 0 评论 -
select()与poll()实现多路复用
1. 多路复用I/O1)应用程序处理多路输入输出流,若采用阻塞模式,将得不到预期的目的;2)若采用阻塞模式,对多个输入进行轮询,会非常浪费CPU时间;3)若设置多个进程,分别处理一条数据通路,将产生进程间的同步与通信问题,使程序变得非常复杂;4)比较好的方法是使用I/O多路复用,其基本思想:先构造一张有关描述符的表,然后调用一个函数,当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回。函...原创 2018-06-03 19:17:47 · 308 阅读 · 0 评论 -
I/O阻塞函数非阻塞模式的实现
1. I/O中有哪些阻塞函数1)读操作中的read、recv、recvfrom2)写操作中的write、sendto3)其他操作:accept、connect 2. 阻塞函数在什么情况下阻塞1)读阻塞,以read函数为例进程调用read函数从套接字中上读取数据,当套接字的接收缓冲区中还没有数据可读时,函数read将发生阻塞。它会一直阻塞,等待套接字的接收缓冲区中有数据可读。经过一段时间后,缓冲区内...原创 2018-06-03 18:39:42 · 2115 阅读 · 0 评论 -
UDP服务器客户端
1. UDP的特点UDP服务器在调用bind()函数之后就可以接受任何UDP客户端发来的数据,不需要像TCP一样建立一对一连接,UDP是面向无连接的。2. UDP服务器客户端收发过程 3. sendto() 与recvfrom() 函数1)sendto()函数,调用者为发送方头文件:#include <sys/types.h> #include <sys/socket...原创 2018-06-03 11:21:56 · 545 阅读 · 0 评论 -
TCP三次握手
TCP报文头部格式: 三次握手过程1)在TCP建立连接过程,抓到的TCP报文如下: 2)点击TCP会话,可以看到握手的三次过程 3)第一次握手过程如下:SYN = 1seq = 4113291021 4)第二次握手过程如下: SYN = 1ACK =0ack =4113291022seq =794831355 5)第三次握手过程如下: ACK = 1ack = 794831356seq =...原创 2018-05-28 23:10:12 · 255 阅读 · 0 评论 -
利用抓包工具分析数据帧具体内容
在博文网络基础知识有一幅图介绍以太网数据帧的封装与解封过程,改图如下:图-数据的封装与解封过程 在本篇博文中将学习利用转包工具查看数据帧中具体内容。 抓包工具:科来网络分析系统8.01) 抓过HTTP报文界面如下:2)点击物理会话后,界面如下:从界面中可以看到HTTP内容分为HTTPGET 和HTTP Text,猜测HTTP GET为HTTP的建立过程,本篇博文不研究HTTP建立过程,所以不细究3...原创 2018-05-28 21:52:54 · 15807 阅读 · 0 评论 -
TCP服务器客户端程序框架
1. TCP服务器端流程2. TCP客户端流程 3. TCP/IP服务器端与客户端框架 示例代码: TCP服务器端:/************************************************************************* @Author: wanghao @Created Time : Fri 25 May 2018 08:09:19 PM PDT @...原创 2018-05-28 19:13:48 · 2151 阅读 · 0 评论 -
TCP/IP网络编程-系统调用
网络编程相关API1. socket() 创建套接字2. bind() 绑定本机地址和端口3. connect() 建立连接4. listen() 设置监听套接字5. accept() 接收TCP连接6. recv(),read(),recvfrom() 数据接收7. send(),write(),sendto() 数据发送8. close(),shutdown()关闭套接字 1. socket(...原创 2018-05-26 12:46:11 · 610 阅读 · 0 评论 -
TCP/IP网络编程基础知识
1. Socket1)Socket简介a)一种编程接口,用于不同计算机之间通信的接口b)一种特殊的文件描述符c)并不局限于TCP/IP协议d)面向连接和面向无连接的Socket都存在e)独立于具体协议,TCP和UDP都可以使用2)Socket类型a) 流式套接字(SOCK_STREAM)提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送发送且按发送顺序接收。内设置流量控制。数据被看作是字节...原创 2018-05-26 10:33:51 · 9168 阅读 · 0 评论 -
网络基础知识
在Linux进程与进程间通信中,学到以下进程间通信方式:管道、信号、共享内存、消息队列、信号量。但是这些通信方式限于本地计算机,如何解决不同计算机中进程间通信的问题?这就需要学习网络。Linux网络主要基础知识如下:1. TCP/IP协议体系结构2. TCP/IP协议3. TCP和UDP协议 1. TCP/IP协议体系结构,该体系结构分四层,每层常见的协议列举如下:注:FTP文件传输协议,PING...原创 2018-05-25 20:38:22 · 263 阅读 · 0 评论