本视频集详细的讲解了C/C++语言的网络编程,包括socket基础,多进程/多线程网络服务端、I/O复用的三种方案(select/poll/epoll)。视频的源代码在QQ群165879466的群文件中,加群答案是B站。1-35节的源代码在socket目录中,36-47节的源代码在selectpollepoll目录中。
1.socket() 创建套接字 2.connect() 向S发起连接请求 3.send() or recv() 发送or接收数据 4.close() 关闭socket释放连接资源 服务器顺序: 1.socket() 创建socket 2.bind() 绑定socket地址与socket套接字 3.listen() 监听socket端口(被动) 4.accept() 接受C的连接请求 5.recv() or send() 接受or发...
c语言socket通信epoll编程 10 利用非阻塞connect与epoll对局域网进行扫描,代码去连接一个网段的机器,当连接有用的客户端时,客户端向扫描程序发送字符串。扫描代码通过recv接受。用这个思路写代码,结果会返回错误recv: Resource temporarily unavailable。但用select替换epoll时,则无此... 展开 ...
1,epoll_wait函数是阻塞的,直到有socket发生变化。 2,epoll使用流程,先创建(epoll_create),再把socket添加到epoll里(epoll_ctl),然后等待socket的变化(epoll_wait) 接收端,接收2个socket #include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/...
{int socketfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in servaddr;memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = inet_addr(SERVER_IP);servaddr.sin_port = htons(SERVER_PORT);int ret = connect(socketfd, (struct sockaddr*...
(struct sockaddr); struct epoll_event ev, events[20]; struct sockaddr_in clientaddr; struct sockaddr_in serveraddr; epfd = epoll_create(256); listenfd = socket(AF_INET, SOCK_STREAM, 0); if(listenfd < 0) { perror("socket create\n"); exit(-1); } setnonblocking(listenfd); ev.data...
epoll是select/poll的强化版。同是多路复用的函数,epoll有了非常大的改进。 支持监听大数目的socket描写叙述符* 一个进程内,select能打开的fd是有限制的,由宏FD_SETSIZE设置。默认值是1024.在某些时候,这个数值是远远不够用的。 解决的方法有两种,一是改动宏然后又一次编译内核,但与此同一时候会引起网络效率的下...
int socket_pair[2]; char *thread_name; }; 可以看到,event_loop中除了定义了当前线程相关的资源还定义了一个socket_pair,这个我们在讲poll的时候有详细讲过,如果没印象了可以回过头去看一下。 event_loop对象定义了以下几个核心方法: // 初始化一个event_loop对象 ...
epoll是select/poll的强化版。同是多路复用的函数,epoll有了非常大的改进。 1. 支持监听大数目的socket描写叙述符* 一个进程内,select能打开的fd是有限制的,由宏FD_SETSIZE设置。默认值是1024.在某些时候,这个数值是远远不够用的。 解决的方法有两种,一是改动宏然后又一次编译内核,但与此同一时候会引起网络效率...
IO multiplexing 这个词可能有点陌生,但是提到 select/epoll,大概就都能明白了。有些地方也称这种 IO 方式为事件驱动 IO(event driven IO)。我们都知道,select/epoll 的好处就在于单个 process 就可以同时处理多个网络连接的 IO。它的基本原理就是 select/epoll 这个 function会不断的轮询所负责的所有 socket,当某...