Linux网络编程
Linux网络编程相关
QtHalcon
大学一直做嵌入式和音视频方向的开发,熟悉Linux,毕业转到了CV方向,现在在深圳从事计算机视觉的工作。
展开
-
网编(1):Linux和Windows的套接字
1基于Linux的套接字相关函数及示例socket函数#include <sys/socket.h>int socket(int domain, int type, int protocol);bind函数#include <sys/socket.h>int bind(int sockfd, struct sockaddr *myaddr, soc...原创 2019-03-30 22:13:25 · 945 阅读 · 0 评论 -
网编(8):套接字的多种可选项
套接字多种可选项套接字可选项是分层的。IPPROTO_IP层可选项是IP协议相关事项,IP PROTO_ TCP层可选项是TCP协议相关的事项, SOL_SOCKET层是套接字相关的通用可选项。 getsockopt()/setsockopt()的选项 含 义 IP_MULTICAST_TTL 设置多播组数据的TTL...原创 2019-04-02 08:48:52 · 268 阅读 · 0 评论 -
网编(9):多进程服务器端
并发服务器端的实现方法多进程服务器: 通过创建多个进程提供服务。 多路复用服务器: 通过捆绑并统一管理I/O对象提供服务。 多线程服务器:通过生成与客户端等量的线程提供服务。创建进程:#include <unistd.h>pid_t fork(void);//成功时返回进程ID, 失败时返回-1。销毁僵尸进程1 : 利用wait 函数#include &l...原创 2019-04-02 14:43:12 · 277 阅读 · 0 评论 -
网编(10):客户端和服务器的进程间通信
通过管道实现进程间通信#include <unistd.h>int pipe(int filedes[2]);//成功时返回0, 失败时返回-1。#filedes[0] 通过管道接收数据时使用的文件描述符,即管道出口。#filedes[1] 通过管道传输数据时使用的文件描述符,即管道入口。实例代码:#include <stdio.h>#inc...原创 2019-04-02 18:54:57 · 422 阅读 · 0 评论 -
网编(11):服务器端的I/O复用
复用:在一个通信频道中传递多个数据(信号)的技术时分复用:分时使用信道 频分复用:同一时间使用,但是每种数据的频率不同,可以根据需要分解出自己需要的频率多进程服务器端的缺点和解决方法为了构建并发服务器,只要有客户端连接请求就会创建新进程。这的确是实际操作中采用的一种方案,但并非十全十美,因为创建进程时需要付出极大代价。这需要大量的运算和内存空间,由于每个进程都具有独立的内存空间,所以相...原创 2019-04-02 20:04:55 · 306 阅读 · 0 评论 -
网编(12):多种读写函数
send & recv 函数#include <sys/socket.h>ssize_t send(int sockfd, canst void * buf, size_t nbytes, int flags);//成功时返回发送的字节数,失败时返回-1。#sockfd 表示与数据传输对象的连接的套接字文件描述符。#but 保存待传输数据的缓冲地址值。#n...原创 2019-04-02 20:30:29 · 273 阅读 · 0 评论 -
网编(13):UDP的广播和多播
多播多播( Multicast ) 方式的数据传输是基于UDP完成的。因此,与UDP服务器端/客户端的实现方式非常接近。区别在于, UDP数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机。换言之,采用多播方式时,可以同时向多个主机传递数据。多播的数据传输方式及流量方面的优点多播服务器端针对特定多播组,只发送1次数据。 即使只发送1 次数据,但该组内的所有客户端...原创 2019-04-03 17:03:13 · 787 阅读 · 0 评论 -
网编(14):套接字和标准I/O
标准I/O函数的优点标准I/O函数具有良好的移植性( PortabiJity )。 标准I/O函数可以利用缓冲提高性能。 数据传输快(300M的文件只要很短的时间就可以完成,但是不用标准I/O要传输很久)创建套接字时,操作系统将生成用于I/O的缓冲。此缓冲在执行TCP协议时发挥着非常重要的作用。此时若使用标准I/O函数,将得到额外的另一缓冲的支持,如图所示。标准I/O函数的几个缺...原创 2019-04-03 20:39:12 · 214 阅读 · 0 评论 -
网编(20):UDP传输数据经常遇到的问题
相对于TCP 协议的程序设计, UDP 协议的程序虽然程序设计的环节要少一些,但是由于UDP 协议缺少流量控制等机制,容易出现一些难以解决的问题。UDP 的报文丢失、报文乱序、connect()函数、流量控制、外出网络接口的选择等是比较容易出现的问题。1 UDP 报文丢失数据利用UDP 协议进行数据收发的时候,在局域网内一般情况下数据的接收方均能接收到发送方的数据,除非连接双方的主机发...原创 2019-06-05 15:47:07 · 20402 阅读 · 5 评论 -
网编(7):域名及网络地址
域名系统(Domain Name System)DNS是对IP地址和域名进行相互转换的系统,其核心是DNS服务器。什么是域名提供网络服务的服务器端也是通过IP地址区分的,但几乎不可能以非常难记的IP地址形式交换服务器端地址信息。因此,将容易记、易表述的域名分配并取代IP地址。DNS 服务器所有计算机中都记录着默认DNS服务器地址,就是通过这个默认DNS服务器得到相应域名的IP地址...原创 2019-04-01 21:17:57 · 345 阅读 · 0 评论 -
网编(6):优雅地断开套接字连接
我们是调用close 或closesocket 函数只是单方面断开连接。————————————————————————————————————————————————基于TCP 的半关闭TCP中的断开连接过程比建立连接过程更重要,因为连接过程中一般不会出现大的变数,但断开过程有可能发生预想不到的情况,因此应准确掌控。只有掌握了下面要讲解的半关闭(Half-close), 才能明确断开...原创 2019-04-01 17:07:10 · 276 阅读 · 0 评论 -
网编(5):基于UDP的服务器端/客户端
UDP提供的是不可靠的数据传输服务。流控机制是区分UDP和TCP的最重要的标志。UDP 内部工作原理与TCP不同, UDP不会进行流控制。接下来具体讨论UDP的作用, 如图所示。IP的作用就是让离开主机B 的UDP数据包准确传递到主机A 。但把UDP包最终交给主机A的某-UDP套接字的过程则是由UDP完成的。UDP最重要的作用就是根据端口号将传到主机的数据包交付给最终的UDP套接字...原创 2019-04-01 16:42:55 · 338 阅读 · 0 评论 -
网编(15):I/O流分离
2种I/O流分离第一种:是通过调用fork函数复制出1 个文件描述符,以区分输入和输出中使用的文件描述符。虽然文件描述符本身不会根据输入和输出进行区分,但我们分开了2个文件描述符的用途,因此这也属于“流”的分离。 第二种:通过2次fdopen函数的调用,创建读模式FILE指针(FILE结构体指针)和写模式FILE指针。换言之,我们分离了输入工具和输出工具,因此也可视为“流”的分离。第一种分...原创 2019-04-04 10:26:18 · 246 阅读 · 0 评论 -
网编(2):套接字的地址族和协议
函数:#include <sys/socket.h>int socket(int domain, int type, int protocol);//成功时返回文件描述符,失败时返回-1。domain //套接字中使用的协议族(Protocol Fam ily ) 信息。type //套接字数据传输类型信息。protocol //计算机间通信中使用的协议信息。...原创 2019-03-30 22:40:35 · 1218 阅读 · 0 评论 -
网编(16):优于select 的epoll(I/O复用)
实现I/O复用的传统方法有select 函数和poll 函数。使用select函数无法得到令人满意的性能。因此有了Linux 下的epoll 、BSD 的kqueue、Solaris 的/dev/poll和Windows的IOCP 等复用技术。select可以参考:网编(11):服务器端的I/O复用select复用方法其实由来巳久,因此,利用该技术后,无论如何优化程序性能也无法同时接入...原创 2019-04-04 17:04:25 · 240 阅读 · 0 评论 -
网编(17):epoll条件(水平)触发和边缘触发
epoll也是实现I/O多路复用的一种方法,为了深入了解epoll的原理,我们先来看下epoll水平触发(level trigger,LT,LT为epoll的默认工作模式)与边缘触发(edge trigger,ET)两种工作模式。使用脉冲信号来解释LT和ET可能更加贴切。Level是指信号只需要处于水平,就一直会触发;而edge则是指信号为上升沿或者下降沿时触发。说得还有点玄乎,我们以生活中的...原创 2019-04-04 20:15:29 · 680 阅读 · 0 评论 -
网编(3):基于TCP的服务器端/客户端
TCP是Transmission Control Protocol (传输控制协议)的简写,意为“对数据传输过程的控制” 。TCP套接字是面向连接的,因此又称基于流( stream) 的套接字。链路层链路层是物理链接领域标准化的结果,也是最基本的领域,专门定义LAN 、WAN 、M心J等网络标准。若两台主机通过网络进行数据交换,则需要图所示的物理连接, 链路层就负责这些标准。...原创 2019-03-31 20:19:00 · 314 阅读 · 0 评论 -
网编(18):多线程服务器端的实现
多进程模型的缺点:创建进程的过程会带来一定的开销。 为了完成进程间数据交换,需要特殊的IPC技术。 每秒少则数十次、多则数千次的`上下文切换'(Context Switching ) 是创建进程时最大的开销。”上下文切换:运行程序前需要将相应进程信息读入内存,如果运行进程A后需要紧接着运行进程B, 就应该将进程A相关信息移出内存,并读入进程B相关信息。这就是上下文切换。但此时进程A...原创 2019-04-05 17:19:56 · 852 阅读 · 0 评论 -
网编(4):TCP原理
TCP 套接字中的I/O缓冲TCP套接字的数据收发无边界。服务器端即使调用1次write函数传输40字节的数据,客户端也有可能通过4次read函数调用每次读取10字节。但此处也有一些疑问,服务器端一次性传输了40字节,而客户端居然可以缓慢地分批接收。客户端接收10字节后,剩下的30字节在何处等候呢?是不是像飞机为等待着陆而在空中盘旋一样,剩下30字节也在网络中徘徊并等待接收呢?实际上, w...原创 2019-04-01 09:19:38 · 391 阅读 · 0 评论 -
网编(19):Windows平台下线程
内核对象的定义操作系统创建的资源( Resource ) 有很多种,如进程、线程、文件及即将介绍的信号最、互斥量等。其中大部分都是通过程序员的请求创建的,而且请求方式(请求中使用的函数)各不相同。虽然存在一些差异,但它们之间也有如下共同点”都是由Windows操作系统创建并管理的资源。”不同资源类型在“管理'方式上也有差异。例如, 文件管理中应注册并更新文件相关的数据I/0位置、文件的...原创 2019-04-05 19:51:52 · 161 阅读 · 0 评论 -
常见的几种服务器/客服端模型
其实常见的几种服务器/客服端模型都可以,用餐厅,服务员,客人来解释。餐厅:代表服务器 顾客:代表客服端 服务员:代表处理客人请求的事件 菜单:菜单方便顾客了解菜品和价格,客人读了菜单,然后点菜,相当于服务器发给客服端的数据 记账本:服务员记录顾客点了那些菜,方便后厨做菜和服务员收钱,相当于客服端给服务器发送数据大致流程:顾客进入餐厅(前提是餐厅门开了且正在营业∩﹏∩), 服务员...原创 2019-07-26 16:32:12 · 3863 阅读 · 0 评论