
socket编程
Smart_Maggie
这个作者很懒,什么都没留下…
展开
-
linux下socket编程,使用多线程实现多客户端与服务器通信
多线程实现多个客户端与服务器通信,服务器主线程一直不停监听客户端的连接,每来一个客户端连接,服务器主控线程就创建一个线程去处理这个客户端数据,服务器端的线程负责把客户端的发来的数据从小写变成大写再写回客户端。 服务器端代码:server.c /* server.c */ #include <stdio.h> #include <string.h> #include &...原创 2019-04-12 10:27:58 · 3549 阅读 · 3 评论 -
linux下使用多进程实现一个TCP server,使多个客户端和服务器进行通信
看了传智播客讲的linux视频,把“多进程进行socket编程”好好理解了一下,整理出来的。 用TCP协议编写了一个简单的服务器、客户端,其中服务器一直在监听本机8000号端口。如果收到客户端的链接,就在服务器端把客户端的IP和端口号打印出来,收到客户端发送的数据,服务器会把数据变成大写并发送回客户端。要实现多个客户端连接到服务器,就需要解决阻塞问题,比如当服务器在read阻塞读客户端数据时,如...原创 2019-03-11 22:15:39 · 7532 阅读 · 4 评论 -
多路IO转接服务器——select模型
多路IO转接服务器——select模型,相对于我之前博客里面的多线程和多进程实现多客户端通信,由于不用创建多个线程、多个进程来实现并发了,没有线程、进程回收问题。只使用select来监听所有的文件描述符,资源占用的就少了。select模型就是把要监听的文件描述符或者称为套接字,全都放到一个集合,调用select函数之后会一直监视集合中哪些文件描述符可读,哪些可写,如果有可读的文件描述符那就去读数据...原创 2019-04-12 14:40:49 · 303 阅读 · 0 评论 -
多路IO转接模型select、poll、epoll,以及epoll的底层实现
select、poll、epoll都是IO多路复用也叫多路IO转接,是通过一种机制,使一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪)能够通知程序进行相应的读写操作。 select (1)每次调用select,都需要把fd集合从用户态拷贝到内核态 (2)同时每次调用select都需要在内核遍历传递进来的所有fd (3)select支持的文件描述符数量太小了,默认是1...原创 2019-04-14 21:46:29 · 1204 阅读 · 0 评论 -
多路IO转接服务器——poll模型
poll模型和select模型很相似,只是描述fd集合的方式不同,poll使用pollfd结构而不是select的fd_set结构,poll得能够监听的数量远远超过了1024,可以通过(ulimit -n 数字)来设置监控的socket描述符个数。 poll模型涉及到得函数有: int poll(struct pollfd *fds, nfds_t nfds, int timeout); s...原创 2019-04-14 15:55:22 · 253 阅读 · 0 评论 -
多路IO转接服务器——epoll模型
epoll是Linux下多路复用IO接口select/poll的增强版本,目前epell是linux大规模并发网络程序中的热门首选模型。epoll监视的描述符数量也不受限制,它所支持的fd上限是最大可以打开文件的数目(具体数目可以cat /proc/sys/fs/file-max察看) epoll函数涉及到的函数有: 1.创建一个epoll句柄,参数size用来告诉内核监听的文件描述符个数,...原创 2019-04-14 17:22:49 · 311 阅读 · 0 评论