Linux网络编程
文章平均质量分 69
sinat_35297665
这个作者很懒,什么都没留下…
展开
-
TCP服务器/客户端实例(C/C )
1.1、Linux下的TCP服务器:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/so...转载 2019-10-21 18:25:57 · 295 阅读 · 0 评论 -
Linux下网络socket编程——实现服务器(select)与多个客户端通信
一、关于socket通信服务器端工作流程:调用 socket() 函数创建套接字 用 bind() 函数将创建的套接字与服务端IP地址绑定 调用listen()函数监听socket() 函数创建的套接字,等待客户端连接 当客户端请求到来之后 调用 accept()函数接受连接请求,返回一个对应于此连接的新的套接字,做好通信准备 调用 write()/read() 函数和 s...转载 2019-10-18 16:43:01 · 934 阅读 · 0 评论 -
linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
一、介绍基于TCP协议通过socket实现网络编程常用API1、读者如果不是很熟悉,可以先看我之前写的几篇博客,有socket,地址结构的理解,更加方便读者理解地址分别是:1)、http://blog.csdn.net/u011068702/article/details/564799272)、http://blog.csdn.net/u011068702/article/de...转载 2019-10-18 16:42:03 · 1056 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(I/O复用之select
http://blog.csdn.net/lianghe_work/article/details/46519633与多线程、多进程相比,I/O复用最大的优势是系统开销小,系统不需要建立新的进程或者线程,也不必维护这些线程和进程。代码示例:[csharp] view plain copy#inclu转载 2017-10-26 21:02:46 · 635 阅读 · 0 评论 -
Linux 网络编程八(epoll应用--大并发处理)
http://www.cnblogs.com/zhanggaofeng/p/5901316.html//头文件 pub.h#ifndef _vsucess#define _vsucess#ifdef __cplusplusextern "C"{#endif//服务器创建socketint server_socket(int port);//设置非阻塞in转载 2018-01-04 14:48:51 · 192 阅读 · 0 评论 -
Linux epoll模型
http://www.cnblogs.com/venow/archive/2012/11/30/2790031.html定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开转载 2017-12-29 10:50:59 · 110 阅读 · 0 评论 -
IO多路复用之epoll总结
http://www.cnblogs.com/Anker/p/3263780.html1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需转载 2017-12-29 23:56:41 · 147 阅读 · 0 评论 -
Linux C++ 实现线程池
http://blog.csdn.net/qq_25425023/article/details/53914609线程池中的线程,在任务队列为空的时候,等待任务的到来,任务队列中有任务时,则依次获取任务来执行,任务队列需要同步。 Linux线程同步有多种方法:互斥量、信号量、条件变量等。 下面是根据互斥量、信号量、条件变量封装的三个类。 线转载 2018-01-22 23:49:41 · 168 阅读 · 0 评论 -
Linux网络编程“惊群”问题总结
http://www.cnblogs.com/Anker/p/7071849.html1、前言 我从事Linux系统下网络开发将近4年了,经常还是遇到一些问题,只是知其然而不知其所以然,有时候和其他人交流,搞得非常尴尬。如今计算机都是多核了,网络编程框架也逐步丰富多了,我所知道的有多进程、多线程、异步事件驱动常用的三种模型。最经典的模型就是Nginx中所用的Master-Worker转载 2018-01-25 23:10:59 · 163 阅读 · 0 评论 -
Linux select TCP并发服务器与客户端编程
http://blog.csdn.net/szkbsgy/article/details/10558881[cpp] view plain copy"font-size:18px;">服务端: #include #include #include #include #include #include转载 2018-01-10 11:20:04 · 333 阅读 · 0 评论 -
深入研究socket编程(3)——使用select函数编写客户端和服务器
http://blog.csdn.net/chenxun_2010/article/details/50488394首先看原先《UNIX网络编程——并发服务器(TCP)》的代码,服务器代码serv.c:[cpp] view plain copy#include #include #include #include #include #include #include #include转载 2018-01-18 21:51:52 · 190 阅读 · 0 评论 -
socket通信之最简单的socket通信
http://blog.csdn.net/xluren/article/details/8043484#t15套接字有三种类型流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM)及原始套接字。1.流式套接字提供面向连接、可靠的数据传输服务,数据按字节流、按顺序收发,保证在传输过程中无丢失、无冗余。TCP协议支持该套接字。2.数据报套接字转载 2018-01-19 22:57:59 · 202 阅读 · 0 评论 -
linux 网络编程:使用两线程实现socket同时收发数据
http://blog.csdn.net/li_wen01/article/details/52665505工作中最近有使用到socket 向客户端同时发送和接收数据,因为是嵌入式linux设备,且要求只能同时一个客户端连接该端口。考虑到节省系统资源,只创建了两个线程分别实现服务端的收发数据。下面直接上代码,该代码为在PC机上程序,已作详细注释。server.c转载 2017-12-28 14:34:40 · 505 阅读 · 0 评论 -
Linux select TCP并发服务器与客户端编程
http://blog.csdn.net/szkbsgy/article/details/10558881[cpp] view plain copy"font-size:18px;">服务端: #include #include #include #include #include #include转载 2017-12-26 17:02:18 · 436 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(多线程)
http://blog.csdn.net/lianghe_work/article/details/46504243tcp多线程并发服务器多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程与创建进程要快 10100 倍,所以又把线程称为“轻量级”进程。线程与进程不同的是转载 2017-10-26 21:04:50 · 343 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(多进程)
http://blog.csdn.net/lianghe_work/article/details/46503895一、tcp并发服务器概述一个好的服务器,一般都是并发服务器(同一时刻可以响应多个客户端的请求)。并发服务器设计技术一般有:多进程服务器、多线程服务器、I/O复用服务器等。二、多进程并发服务器在 Linux 环境下多进程的应用转载 2017-10-26 21:08:19 · 840 阅读 · 0 评论 -
三次握手和四次挥手
https://www.cnblogs.com/shihaochangeworld/p/5770294.htmlTCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息。1.第一次握手:建立连接转载 2017-11-23 23:33:43 · 141 阅读 · 0 评论 -
Linux下的TCP/IP编程----IO复用及IO复用服务端
http://blog.csdn.net/wqc_csdn/article/details/51583901在之前我们实现的并发服务端时通过床将多个进程来实现的,这种并实现并发的方式简单方便,但是进程的创建和销毁是很消耗系统资源的,在访问量大时服务器很容易出现资源不够用的情况。除此之外,由于每个进程有独立的内存空间,所以进程间的通讯也相对比较复杂。因此我们可以考虑通过另一种方式来实现服转载 2017-12-25 11:22:21 · 439 阅读 · 0 评论 -
socket 编程篇六之IPO多路复用-select poll epoll
http://blog.csdn.net/woxiaohahaa/article/details/51498951文章参考自:http://blog.csdn.net/tennysonsky/article/details/45745887(秋叶原 — Mike VS 麦克《Linux系统编程——I/O多路复用select、poll、epoll的区别使用》)此外,还有一篇好文:转载 2017-12-25 14:50:00 · 208 阅读 · 0 评论 -
I/O复用的 select poll和epoll的简单实现
http://www.cnblogs.com/wj9012/p/3876734.html一个tcp的客户端服务器程序服务器端不变,客户端通过I/O复用轮询键盘输入与socket输入(接收客户端的信息)服务器端: 1 /*服务器: 2 1.客户端关闭后,服务器再向客户端发送信息,第一次会收到一个RST复位报文,第二次会收到SIGPIPE信号,导致服务器关闭,转载 2017-12-25 15:09:50 · 199 阅读 · 0 评论 -
几种并发服务器模型的实现:多线程,多进程,select,poll,epoll
http://www.cnblogs.com/wj9012/p/3879605.html客户端使用select模型: 1 #include 2 #include 3 #include string.h> 4 #include 5 #include 6 #include 7 #include in.h> 8 #include转载 2017-12-25 15:11:15 · 748 阅读 · 0 评论 -
linux socket 编程(C语言)
https://www.cnblogs.com/x_wukong/p/4541010.html最近看了一些网络编程的书籍,一直以来总感觉网络编程神秘莫测,其实网络编程入门还是很容易学的,下面这些代码是我在linux下编写的,已经运行过了,编译之后就可以运行了。有不足之处希望大家多多指出,共同学习交流。 套接字是一种进程间的通信的方法,不同于以往介绍的进程间通信方法的是,转载 2017-12-26 16:18:51 · 164 阅读 · 0 评论 -
epoll实现高并发聊天室
http://blog.csdn.net/qq_31564375/article/details/51581038项目介绍本项目是实现一个简单的聊天室,聊天室分为服务端和客户端。本项目将很多复杂的功能都去掉了,线程池、多线程编程、超时重传、确认收包等等都不会涉及。总共300多行代码,让大家真正了解C/S模型,以及epoll的使用。为了方便查看,代码已经改的很小白,绝对比nginx源码好理解(当然大...转载 2018-03-07 20:19:33 · 1842 阅读 · 0 评论 -
处理大并发之一 对epoll的理解,epoll客户端服务端代码
http://blog.csdn.net/zhuxiaoping54532/article/details/56494313处理大并发之一对epoll的理解,epoll客户端服务端代码序言:该博客是一系列的博客,首先从最基础的epoll说起,然后研究libevent源码及使用方法,最后研究nginx和node.js,关于select,poll这里不做说明,只说明其相对于epoll的不足,其实sel...转载 2018-03-07 20:24:15 · 196 阅读 · 0 评论 -
Linux网络编程——I/O复用之poll函数
https://blog.csdn.net/lianghe_work/article/details/46534029一、回顾前面的selectselect优点:目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点select缺点:1.每次调用 select(),都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd 很多时会很大,同时每次调用 select() 都需要在内核遍历传递进...转载 2018-07-11 17:03:16 · 176 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(poll实现)
https://blog.csdn.net/lianghe_work/article/details/46535859想详细彻底地了解poll或看懂下面的代码请参考《Linux网络编程——I/O复用之poll函数》代码:#include <string.h>#include <stdio.h>#include <stdlib.h>#include <uni...转载 2018-07-11 17:03:51 · 306 阅读 · 0 评论 -
Linux网络编程——I/O复用函数之epoll
https://blog.csdn.net/lianghe_work/article/details/46544567一、epoll概述epoll 是在 2.6 内核中提出的,是之前的 select() 和 poll() 的增强版本。相对于 select() 和 poll() 来说,epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放...转载 2018-07-11 17:04:32 · 124 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(epoll实现)
https://blog.csdn.net/lianghe_work/article/details/46551871通过epoll实现tcp并发回执服务器(客户端给服务器发啥,服务器就给客户端回啥)代码如下:#include <string.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h...转载 2018-07-13 21:57:42 · 443 阅读 · 0 评论 -
MSG_PEEK标志
https://blog.csdn.net/aspnet_lyc/article/details/28937229MSG_PEEK标志可以用来读取套接字接收队列中可读的数据,一些情况会用到它,比如为了避免不阻塞而先检查套接字接收队列中可读的数据长度,再采取相应操作。当然,不阻塞也可采取其他的方法,例如非阻塞式I/O。MSG_PEEK标志会将套接字接收队列中的可读的数据拷贝到缓冲区,但不会使套接子接...转载 2018-07-13 21:56:50 · 1824 阅读 · 0 评论 -
循环服务器,并发服务器模型以及I/O多路转接模型
https://blog.csdn.net/xinianbuxiu/article/details/53455784一、基于TCP/IP协议的基本循环服务器tcp_server.c #include <stdio.h> #include <stdlib.h> #include <string.h> ...转载 2018-08-02 23:14:50 · 241 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(I/O复用之select)
https://blog.csdn.net/lianghe_work/article/details/46519633与多线程、多进程相比,I/O复用最大的优势是系统开销小,系统不需要建立新的进程或者线程,也不必维护这些线程和进程。代码示例:#include <stdio.h> #include <unistd.h>#include <stdlib.h>#inc...转载 2018-07-11 17:02:39 · 182 阅读 · 0 评论 -
Linux网络编程——I/O复用之select详解
https://blog.csdn.net/lianghe_work/article/details/46506143一、I/O复用概述I/O复用概念:解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调I/O复用使用的场合:1.当客户处理多个描述符(通常是交互式输入、网络套接字)时,必须使用I/O复用。2.tcp服务器既要处理监听套接字,又要处理已连接...转载 2018-07-11 17:02:03 · 160 阅读 · 0 评论 -
Linux网络编程——tcp并发服务器(多线程)
https://blog.csdn.net/lianghe_work/article/details/46504243tcp多线程并发服务器多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程与创建进程要快 10100 倍,所以又把线程称为“轻量级”进程。线程与进程不同的是:一个进程内的所有线程...转载 2018-07-11 17:00:56 · 2634 阅读 · 0 评论 -
Linux网络编程---I/O复用模型之select
https://blog.csdn.net/men_wen/article/details/53456435Linux网络编程—I/O复用模型之select1. IO复用模型IO复用能够预先告知内核,一旦发现进程指定的一个或者多个IO条件就绪,它就通知进程。IO复用阻塞在select或poll系统调用上,而不是阻塞在真正的IO系统调用上。2. 函数selectselect函数能够告知内核对哪些描述...转载 2018-04-07 17:11:18 · 136 阅读 · 0 评论 -
Linux网络编程---I/O复用模型之poll
https://blog.csdn.net/men_wen/article/details/53456474Linux网络编程—I/O复用模型之poll1.函数pollpoll系统调用和select类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds...转载 2018-04-07 17:11:59 · 173 阅读 · 0 评论 -
Linux网络编程---I/O复用模型之epoll
https://blog.csdn.net/men_wen/article/details/53456474Linux网络编程—I/O复用模型之epoll1. epoll模型简介epoll是Linux多路服用IO接口select/poll的加强版,e对应的英文单词就是enhancement,中文翻译为增强,加强,提高,充实的意思。所以epoll模型会显著提高程序在大量并发连接中只有少量活跃的情况下...转载 2018-04-07 18:28:11 · 223 阅读 · 0 评论 -
getsockname函数与getpeername函数的使用
https://www.tuicool.com/articles/V3Aveygetsockname和getpeername函数getsockname函数用于获取与某个套接字关联的本地协议地址 getpeername函数用于获取与某个套接字关联的外地协议地址定义如下:[cpp] view plain copy#include<sys/socket.h> int getsockna...转载 2018-05-25 20:29:51 · 632 阅读 · 0 评论 -
Linux惊群效应详解(最详细的了吧)
https://blog.csdn.net/lyztyycode/article/details/78648798?locationNum=6&fps=1linux惊群效应详细的介绍什么是惊群,惊群在线程和进程中的具体表现,惊群的系统消耗和惊群的处理方法。1、惊群效应是什么? 惊群效应也有人叫做雷鸣群体效应,不过叫什么,简言之,惊群现象就是多进程(多线程)在同时阻塞等待同一个事...转载 2018-06-04 16:54:20 · 755 阅读 · 0 评论 -
TCP第四次挥手为什么要等待2MSL
当客户端进入TIME-WAIT状态的时候(也就是第四次挥手的时候),必须经过时间计数器设置的时间2MSL(最长报文段寿命)后,才能进入关闭状态,这时为什么呢??? 这最主要是因为两个理由:1、为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传...转载 2018-07-09 23:42:45 · 17458 阅读 · 6 评论 -
socket编程 -- epoll模型服务端/客户端通信的实现
https://blog.csdn.net/y396397735/article/details/50680359本例实现如下功能: 支持多客户端与一个服务端进行通信,客户端给服务端发送字符串数据,服务端将字符串中小写转为大写后发送回客户端,客户端打印输出经转换后的字符串。 例如:发送abcde,打印输出ABCDE 服务端源码如下:/*server.c*/#include <stdio.h...转载 2018-07-11 16:48:18 · 505 阅读 · 0 评论