linux网络编程
文章平均质量分 79
neko233
这个作者很懒,什么都没留下…
展开
-
服务器模型(二)
三、TCP的高级并发服务器模型注:linux网络编程 第14章读书笔记原创 2021-02-23 16:09:04 · 119 阅读 · 0 评论 -
服务器模型(一)
循环服务器:使用循环的方法逐个处理客户端连接,处理完一个之后再处理另一个。 并发服务器的简单模型:使用进程处理客户端的连接和请求。 并发服务器的TCP的分类:使用进程池或者线程池进行客户端请求的处理的框架和方法,并按照accept的处理情况进行不同状态的划分。 并发服务器模型中使用IO复用:使用同一处理模块监视多个客户端的连接并进行处理。一、循环服务器循环服务器指对于客户端的请求和连接,服务器在处理完一个之后再处理另一个,即串行处理客户端的请求。1、UDP循环服务器while循环作为主..原创 2021-02-22 18:04:52 · 218 阅读 · 0 评论 -
套接字选项、getsockopt()、setsockpt()、ioctl()、fcntl()
一、套接字选项1、getsockopt()、setsockopt()#include <sys/types.h>#include <sys/socket.h>int getsockopt(int s,int level,int optname,void* optval,socklen_t* optlen);//获得套接字选项设置情况int setsockopt(int s,int level,int optname,const void* optval,socklen_t原创 2021-02-20 17:09:19 · 963 阅读 · 0 评论 -
基于UDP协议的接收和发送
一、UDP编程框架分为客户端和服务端两部分。服务端主要包含建立套接字socket()、将套接字与地址结构进行绑定bind()、读写数据recvfrom()和sendto()、关闭套接字close()等几个过程。客户端包括建立套接字socket()、读写数据recvfrom()和sendto()、关闭套接字close()几个过程。1、UDP编程框图使用socket()建立套接字的类型与TCP不同,为数据报套接字。客户端和服务端之间的差别在于服务端必须使用bind()函数来绑定侦听的本地udp端原创 2021-02-19 10:19:59 · 2923 阅读 · 0 评论 -
IO模型、select()和pselsect()、poll()和ppoll()函数
一、IO模型IO的方式有阻塞IO、非阻塞IO、IO复用、信号驱动、异步IO等。1、阻塞IO阻塞IO是最通用的IO类型,在数据未到来之前程序会一直等待。2、非阻塞IO把套接字设置成非阻塞的IO,则对每次请求内核都不阻塞,会立即返回。当没有数据的时候会返回一个错误。3、IO复用IO复用模型可以在等待的时候加入超时的时间,当超市时间没有达到的时候与阻塞的情况一致。而超时时间达到仍没有数据,系统会返回,不再等待。4、信号驱动IO模型在进程开始的时候注册一个信号处理的回调函数,进程继续执行,当原创 2021-02-18 15:36:25 · 534 阅读 · 0 评论 -
IO函数
一、IO函数1.recv()#include <sys/types.h>#include <sys/socket.h>ssize_t recv(int fd,void* buf ,size_t len,int flags);fd,调用socket()返回的套接字文件描述符buf,指向接收网络数据的缓冲区len,接收缓冲区的长度,单位字节flag,表示接收数据的方式,常用MSG_DONTWAIT,表示非阻塞操作,不用等待,即使没有数据也立刻返回。值如下:注:当指原创 2021-02-10 11:13:44 · 611 阅读 · 0 评论 -
字节序
大端字节序和小端字节序小端字节序:低字节存放在低地址,高字节存放在高地址。小端字节序:低字节存放在高地址,高字节存放在低地址。例:检查字节序的例子可以使用联合体来判断系统使用的是什么字节序#include <stdio.h>#include <stdlib.h>union test{ unsigned short val; unsigned char byte[2];};int main(){ test typeorder;原创 2021-02-08 17:31:19 · 96 阅读 · 0 评论 -
TCP网络编程
一、套接字编程基础套接字地址结构套接字编程需要指定套接字地址作为参数,不同协议族有不同的地址结构定义方式。通常以sockaddr开头,每个协议族有一个唯一的后缀。通用套接字数据结构typedef unsigned short sa_family_t;struct sockaddr{ sa_family_t sa_family; //协议族 char sa_data[14];//协议族数据};实际使用的套接字数据结构在网络程序设计中使用的函数几乎所有的套接字函数都使用这个结构原创 2021-02-08 16:21:00 · 831 阅读 · 0 评论 -
TCP三次握手和四次挥手以及11种状态
转自https://blog.51cto.com/jinlong/2065461TCP三次握手和四次挥手以及11种状态1、三次握手置位概念:根据TCP的包头字段,存在3个重要的标识ACK、SYN、FINACK:表示验证字段SYN:位数置1,表示建立TCP连接FIN:位数置1,表示断开TCP连接三次握手过程说明:1、由客户端发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且将报文中的SYN字段置为1,表示需要建立TCP连接。(SYN=1,seq=x,x为随转载 2021-02-05 15:50:03 · 284 阅读 · 0 评论 -
线程间的互斥和信号量
线程间的互斥互斥锁是用来保护一段临界区的,它保证某段时间内只有一个线程在执行一段代码或者访问某个资源。函数 #include <pthread.h> pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALZER_NP; pthread_mutex_t errchkmutex = PTHREAD_ER原创 2021-02-04 16:19:31 · 243 阅读 · 0 评论 -
linux下的线程
线程与进程相比的有点:系统资源消耗低速度快线程间数据共享比进程间容易#include <pthread.h>#include <unistd.h>int pthread_create(pthread_t *thread,pthread_attr_t * attr,void* (*start_routine)(void*),void* arg);//创建线程int pthread_join(pthread_t thread,void** threadReturn);/原创 2021-02-04 16:00:43 · 77 阅读 · 0 评论 -
进程间通信和同步
linux下进程间的通信方法:半双工管道、FIFO(命名管道)、消息队列、信号量、共享内存等。1.半双工管道进程创建管道,每次创建两个文件描述符来操作管道。其中一个对管道进行写操作,另一个描述符进行读操作。创建管道的原型为:#include<unistd.h>int pipe(int filedes[2]);filedes数组是一个文件描述符的数组,用于保存管道返回的两个文件描述符。filedes[0]是为了读操作而创建和打开的,filedes[1]是为了写操作而打开的。函数执行原创 2021-02-04 15:31:32 · 355 阅读 · 0 评论