![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux网络编程
知无涯99
保密
展开
-
centos7创建samba
实现用root去访问共享文件夹:安装samba:yum -y install samba samba-client samba-common[root@localhost ~]# smbd -VVersion 4.10.4创建共享文件夹:mkdir -p /home/share配置/etc/samba/smb.conf配置:cp /usr/share/samba/smb.conf /etc/samba/smb.conf[root@localhost share]# vim /etc/sam原创 2020-06-25 18:57:10 · 345 阅读 · 0 评论 -
12.Linux网络编程-POSIX线程
一:POSIX线程的优点POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段,体现在如下几点:1)线程拥有并发处理能力线程类似于进程。如同进程,线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片来模拟线程的并发执行,这种方式和进程的相同。而在多处理器系统中,如同多个进程,线程实际上一样可以并发执行。2)线程间的共享内存机制对于大多数合作性任务,多线程比多个独立...原创 2020-04-14 19:34:38 · 197 阅读 · 0 评论 -
11.Linux网络编程-POSIX共享内存
一:POSIX共享内存在Linux中,POSIX共享内存对象驻留在tmpfs伪文件系统中。系统默认挂载在/dev/shm目录下。当调用shm_open函数创建或打开POSIX共享内存对象时,系统会将创建/打开的共享内存文件放到/dev/shm目录下。二:共享内存相关函数#include <sys/mman.h>int shm_open(const char *name, int...原创 2020-04-07 15:25:57 · 260 阅读 · 0 评论 -
10.Linux网络编程-POSIX消息队列
一:posix消息队列消息队列可以认为是一个消息链表,某个进程往一个消息队列中写入消息之前,不需要另外某个进程在该队列上等待消息的达到,这一点与管道和FIFO相反。Posix消息队列与System V消息队列的区别如下:1) 对Posix消息队列的读总是返回最高优先级的最早消息,对System V消息队列的读则可以返回任意指定优先级的消息;2)当往一个空队列放置一个消息时,Posix消息队列...原创 2020-04-06 22:33:01 · 313 阅读 · 0 评论 -
10.Linux网络编程-system v信号量
一:信号量简介信号量本质就是一个计数器,用于统计临界资源数目的计数器,信号量是用来调协进程对共享资源的互斥访问,采用PV原语的原理。它的P(sv)和V(sv)行为是这样的:P(sv):要访问受保护的资源的进程或者线程试图对信号量的值减1,如果信号量的值现在不可用,即信号量为0,减1操作将被阻塞(休眠),直到信号量大于0时,才会得以继续执行;V(sv):要释放受保护的资源时,信号量的值将会加1...原创 2020-03-03 22:10:01 · 149 阅读 · 0 评论 -
9.Linux网络编程-SYSTEM V共享内存
一:内存映射文件1.基本原理mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间...原创 2020-03-02 20:56:50 · 269 阅读 · 0 评论 -
8.Linux网络编程-System V消息队列
一:消息队列消息队列是进程间通信的一种手段,进程产生的数据块以链表的形式存储在消息队列中,每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型。消息队列有以下的几个限制,每个消息有最大长度不能超过MSGMAX,每个消息队列的总的字节数不能超过MSGMNB,消息队列的总数不能超过MSGMNI。//查看消息队列限制的值root@epc:~# cat /proc/sys/ker...原创 2020-02-27 22:39:07 · 123 阅读 · 0 评论 -
7.Linux网络编程-UNIX域套接字
一:UNIX套接字用于同一台pc上运行的进程之间通信,它仅仅复制数据,不执行协议处理,不需要增加删除网络报头,无需计算校验和,不产生顺序号,无需发送确认报文。unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法。它提供两类套接字,字节流和数据报,分别类似于TCP和UDP。使用unix域套接字的三个好处:unix域套接字通常比通信两端位于同一个主机的TCP套...原创 2020-02-26 23:05:25 · 339 阅读 · 0 评论 -
6.Linux网络编程-epoll原理
一:对比select发现epoll的有点要比较epoll相比较select高效在什么地方,就需要比较二者做相同事情的方法。要完成对I/O流的复用需要完成如下几个事情:1.用户态怎么将文件句柄传递到内核态?2.内核态怎么判断I/O流可读可写?3.内核怎么通知监控者有I/O流可读可写?4.监控者如何找到可读可写的I/O流并传递给用户态应用程序?5.继续循环时监控者怎样重复上述步骤?搞清...原创 2020-02-26 22:32:03 · 175 阅读 · 0 评论 -
5.Linux网络编程-select实现超时API
/* * data.h * * Created on: 2020年2月21日 * */#ifndef SRC_DEMO_DATA_H_#define SRC_DEMO_DATA_H_#include <stdio.h>#include <unistd.h>#include <errno.h>#include <sys/soc...原创 2020-02-26 14:03:41 · 379 阅读 · 0 评论 -
4.Linux网络编程-select和poll模型
1.补充知识2.简易回射服务器/客户端的实现3.select模型实现4.poll模型实现原创 2020-02-25 20:05:28 · 165 阅读 · 0 评论 -
3.Linux网络编程-粘包处理
/* * visiopacket.h * * Created on: 2019年5月8日 * Author: hfeng.liu * * 粘包处理:由于TCP是基于流传输的机制,当发送多个间隔较小的小报文时,它会在缓冲区中缓存成一个报文发送给peer,这时peer * 无法区分一个报文的边界。 * 解决的办法:让peer知道一个报文的边界,即知道它...原创 2019-08-08 23:32:01 · 235 阅读 · 0 评论 -
2.Linux网络编程-socket函数和C2S实现
1.TCP客户/服务器模型TCP服务器:socket()–>bind()–>listen()–>accept()–>block直至客户连接到达---->read()–>处理请求–>write()---->read()–>close()TCP客户端:socket()—>connect()---->write()----->r...原创 2019-08-08 23:25:19 · 169 阅读 · 0 评论 -
1.Linux网络编程-字节序和地址转换函数
1.IPv4套接口地址结构IPv4套接口地址结构通常称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件<netinet/in.h>中struct sockaddr_in{ uint8_t sin_len; //整个sockaddr_in结构体的长度; sa_family_t sin_family; //指定地址族,必须设定为AF_INET(ipv...原创 2019-08-08 23:15:03 · 368 阅读 · 0 评论