![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux网络编程
汪呈祥
中国海洋大学漫漫就业中的一员
展开
-
Linux网络编程-14、本地套接字用于进程间通信参考TCP下的C/S模型 不同: 1、socket(AF_UNIX,,) 2、sockaddr_un地址结构 3、双端都得自己bind(), 不能隐式
【代码】Linux网络编程-14、本地套接字用于进程间通信参考TCP下的C/S模型 不同: 1、socket(AF_UNIX,,) 2、sockaddr_un地址结构 3、双端都得自己bind(), 不能隐式绑定。原创 2023-05-10 17:21:01 · 115 阅读 · 0 评论 -
Linux网络编程-13、UDP(自身支持并发)下的C/S模型recvfrom代替read并传出对端的sockaddr地址结构(ip + port) sendto代替write
【代码】Linux网络编程-13、UDP(自身支持并发)下的C/S模型recvfrom代替read并传出对端的sockaddr地址结构(ip + port) sendto代替write。1、socket()建立通信套接字2、setsockopt设置端口复用3、bind绑定服务器自己的sockaddr地址结构(方便客户端知道发给谁)4、recvfrom从sfd阻塞读数据隐式绑定, 随机分配可用端口号1个端口号 = 1个进程1个ip = 1台设备ip + 端口号 = 网络环境中的唯一的x进程原创 2023-05-10 15:47:29 · 112 阅读 · 0 评论 -
Linux网络编程-12、epoll的事件模型1、ET(边沿触发)(监听的fd数据到达的那一刻才会触发epoll_wait)常常搭配fd的非阻塞属性(read(fd,,)时忙轮询)
【代码】Linux网络编程-12、epoll的事件模型1、ET(边沿触发)(监听的fd数据到达的那一刻才会触发epoll_wait)搭配fd的非阻塞属性(read(fd,,)时忙轮询)epoll事件模型: ET(边沿触发)下1、fd先设置非阻塞属性int flags = fcntl(wevent[i].data.fd, F_GETFL);flags |= O_NONBLOCK;ret = fcntl(wevent[i].data.fd, F_SETFL, flags);2、再把fd加入监听树中原创 2023-05-08 21:35:50 · 162 阅读 · 0 评论 -
Linux网络编程-12、epoll的两种事件模型1、LT(默认水平触发)(监听的fd有数据就触发epoll_wait)2、ET(边沿触发)(监听的fd数据到达的那一刻才会触发epoll_wait)
【代码】Linux网络编程-12、epoll的两种事件模型1、LT(默认水平触发)(监听的fd有数据就触发epoll_wait)2、ET(边沿触发)(监听的fd数据到达的那一刻才会触发epoll_wait)(监听的fd的事件 | EPOLLET)即可设置ET(边沿触发)原创 2023-05-08 20:45:32 · 131 阅读 · 0 评论 -
Linux网络编程-11、epoll监听文件描述符 --用于其他进程间通信pipe read管道一样阻塞
【代码】Linux网络编程-11、epoll监听文件描述符 --用于其他进程间通信pipe read管道一样阻塞。epoll默认的事件模型:LT(水平触发):监听的fd中有数据, 就会触发epoll_wait导致---read()管道中的数据;0、epoll小秘书只负责监听的fd[0]1、epoll_create()创建1棵监听树2、epoll_ctl()把fd[0]加入监听树, 并监听fd[0]的读事件3、epnum = epoll_wait()监听4、解析epnum, 是否有读事件发生原创 2023-05-08 20:31:44 · 316 阅读 · 0 评论 -
Linux网络编程-10、epoll实现多路IO转接服务器, TCP下的C/S模型优化, 两个阻塞 1新客户端connect建立连接 服务器accept阻塞 2旧客户端想发数据 服务器read阻塞
Linux网络编程-10、epoll实现多路IO转接服务器, TCP下的C/S模型优化, 两个阻塞 1新客户端connect建立连接 服务器accept阻塞 2旧客户端发数据read阻塞5、epoll小秘书只负责监听(1次调用, 只监听1次)6、epoll_create创建1棵监听树7、epoll_ctl往监听树上添加结点(想要监听的客户端=文件描述符) 8、分析 传出的数组-挨个看是谁产生的读事件9、lfd有读事件-新客户端建立连接10、新cfd加入监听树9、其他fd有读事件-旧客户端发数据原创 2023-05-08 16:09:45 · 68 阅读 · 0 评论 -
Linux网络编程-9、服务器进程突破1024文件描述符限制(不想重新编译内核) 1命令ulimit -n 值 随进程短暂生效 2修改/etc/security/limits.conf永久生效
Linux网络编程-9、服务器进程突破1024文件描述符限制(不想重新编译内核) 1命令ulimit -n 值 随进程短暂生效 2修改/etc/security/limits.conf永久生效原创 2023-05-08 12:02:12 · 526 阅读 · 0 评论 -
Linux网络编程-8、read()函数返回值-1具体分析:1被(信号等)中断2以非阻塞方式读但没数据3真的出错了
【代码】Linux网络编程-8、read()函数返回值-1具体分析:1被(信号等)中断2以非阻塞方式读但没数据3真的出错了。原创 2023-05-08 11:39:10 · 651 阅读 · 0 评论 -
Linux网络编程-7、poll实现多路IO转接服务器, TCP下的C/S模型优化, 两个阻塞 1新客户端connect建立连接 服务器accept阻塞 2旧客户端想发数据 服务器read阻塞
【代码】Linux网络编程-7、poll实现多路IO转接服务器, TCP下的C/S模型优化, 两个阻塞 1新客户端connect建立连接 服务器accept阻塞 2旧客户端想发数据 服务器read阻塞。1、lfd = socket()建立监听套接字2、setsockopt() 允许端口复用3、bind() 给监听套接字绑定sockaddr地址结构4、listen() 设置监听上限5、ret = poll( &pfds) 小秘书只负责监听6、对ret分类判断 解析读事件(都由谁产生)原创 2023-05-07 21:39:06 · 64 阅读 · 0 评论 -
Linux网络编程-6、select实现多路IO转接服务器, TCP下的C/S模型优化, 两个阻塞 1新客户端connect建立连接 服务器accept阻塞 2旧客户端想发数据 服务器read阻塞
【代码】Linux网络编程-6、select实现多路IO转接服务器, TCP下的C/S模型优化, 两个阻塞 1新客户端connect建立连接 服务器accept阻塞 2旧客户端想发数据 服务器read阻塞1、lfd = socket()建立监听套接字2、setsockopt() 允许端口复用3、bind() 给监听套接字绑定sockaddr地址结构4、listen() 设置监听上限5、ret = select( &readset) 小秘书只负责监听6、对ret分类判断 解析读事件(都由谁产生)原创 2023-05-06 21:08:01 · 90 阅读 · 0 评论 -
Linux网络编程-5、服务器主动关闭连接-TIME_WAIT状态, 需要等2MSL时长到CLOSED状态, 在等待期间无法./server 端口被占用-设置端口复用 netstat -apn查看状态
Linux网络编程-服务器主动关闭连接-处于TIME_WAIT状态, 需要等2MSL时长到CLOSED状态, 在等待期间无法./server 端口被占用-设置端口复用 netstat -apn查看状态原创 2023-05-04 20:53:41 · 217 阅读 · 0 评论 -
Linux网络编程-4、多线程并发服务器 1、accept()成功调用并返回才能pthread_create()创建子线程 2、(不同于多进程服务器)主线程不能关闭sfd(通信套接字) 3、nc测试
【代码】Linux网络编程-3、多线程并发服务器 1、accept()成功调用并返回才能pthread_create()创建子线程 2、(不同于多进程服务器)主线程不能关闭sfd(通信套接字) 3、nc测试。原创 2023-05-03 20:52:43 · 88 阅读 · 0 评论 -
Linux网络编程-3、多进程并发服务器 1、父进程先注册信号捕捉函数(避免循环注册), 借助SIGCHLD信号回收子进程 2、accept()成功调用并返回才能fork()创建子进程 3、nc测试
【代码】Linux网络编程-3、多进程并发服务器 1、父进程先注册信号捕捉函数(避免循环注册), 借助SIGCHLD信号回收子进程 2、accept()成功调用并返回才能fork()创建子进程 3、nc测试。原创 2023-05-03 20:46:19 · 90 阅读 · 0 评论 -
Linux网络编程-2、代码健壮性的TCP下的C/S模型(检查所有函数返回值)-封装常用函数-代码逻辑更简洁清晰 只写服务器端程序, nc 127.0.0.1 9527测试
【代码】Linux网络编程-2、代码健壮性的TCP下的C/S模型(检查所有函数返回值)-封装常用函数-代码逻辑更简洁清晰 只写服务器端程序, ncp 127.0.0.1 9527测试。原创 2023-05-03 11:40:12 · 80 阅读 · 0 评论 -
Linux网络编程-1、TCP下的C/S模型 server服务器端 client客户端 -隐式绑定, 系统帮忙分配本机(可用ip)和(随机的端口号) 只写服务器端程序, nc IP地址 端口号 测试
【代码】Linux网络编程-1、TCP下的C/S模型 server服务器端 client客户端 -隐式绑定, 系统帮忙分配本机(可用ip)和(随机的端口号) 只写服务器端程序, nc IP地址 端口号 测试。原创 2023-05-02 19:40:50 · 170 阅读 · 0 评论