C++网络编程
文章平均质量分 65
个人学习笔记
noobodybwq
这个作者很懒,什么都没留下…
展开
-
4.select,poll,epoll
写事件:epoll_wait触发写事件后,若发送缓冲区没有满,不会触发写事件,只有当发送缓冲区由满变为不满时才再次触发。select对所有连接进行遍历,取出有事件产生的连接描述符,判断每个描述符是否在读或写的描述符集合中。读事件:epoll_wait触发读事件后,不管程序有没有处理,都不会再触发,直到有新的数据到达。读事件:若接收缓冲区中有数据、没读完,下次调用epoll_wait时立即触发读事件。写事件:若写缓冲区未满,下次调用epoll_wait时立即触发写事件。发生变化的文件描述符作为数组返回。原创 2024-06-20 15:06:26 · 290 阅读 · 0 评论 -
3.多进程、多线程并发服务器
该状态可以在创建线程时指定,或在线程创建之后在线程函数开头detach自己:pthread_detach(pthread_self()),在线程函数中就可以直接调用pthread_exit(NULL)退出。joinable状态,当线程函数自己返回退出时或pthread_exit()时都不会释放线程占用的堆栈和线程描述符(总计8k多),只有调用了pthread_join之后资源才会被释放。,成功后返回0,如果tid是分离线程或者不是当前进程中的有效线程则返回错误。返回0代表成功,失败返回的是错误号。原创 2024-06-07 15:00:15 · 682 阅读 · 0 评论 -
2.编写自己的Socket
但每个实例绑定的IP地址是不能相同的。1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。3、SO_REUSEADDR允许单个进程绑定相同的端口到多个socket上,但每个socket绑定的ip地址不同。4、SO_REUSEADDR允许完全相同的地址和端口的重复绑定。但这只用于UDP的多播,不用于TCP。需要注意的是,设置端口复用函数要在绑定之前调用,而且只要绑定到同一个端口的所有套接字都得设置复用。原创 2024-06-06 16:46:22 · 267 阅读 · 0 评论 -
1.Socket编程
短整型从主机字节序转为网络字节序:uint16_t htons(uint16_t hostshort)整型从主机字节序转为网络字节序:uint32_t htonl(uint32_t hostshort) uint32_t ntohl(uint32_t netlong) 转ip地址。反过来:uint16_t ntohs(uint16_t netlong) 转端口。反过来char* inet_ntoa(struct in_addr_in)char** h_addr_list //主机IP地址。原创 2024-06-06 16:45:38 · 821 阅读 · 0 评论