基于Window网络编程课程设计(刘琰著)写tcp和udp双回射服务器思想及代码实现

再写一遍双回射,主要还是按照书上走,也方便自己回顾理解

而且这个代码完美解决了tcp阻塞问题,其实看懂这个代码也理解了为什么上篇的代码网络编程——实现tcp和udp的双回射服务器(c++)-优快云博客

会被阻塞,读者可以自己思考下

本书还是采用的是select的方法来实现双回射的服务器。

一、基本思路流程图:

                               

                                          

一、主要实现过程:

创建三个套接字:

SOCKET tcp_sock = INVALID_SOCKET;//tcp监听套接字
SOCKET udp_sock = INVALID_SOCKET;//udp套接字
SOCKET tcp_clnt_sock = INVALID_SOCKET;//tcp连接套接字

初始化套接字:

if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
    printf("WSAStartup failed");
}
对监听和udp两个套接字进行基本操作:

tcp_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
udp_sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

//这一步上次文章有讲到,目的是能够快速重新使用该端口

int opt = 1;
setsockopt(tcp_sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&opt, sizeof(opt));
setsockopt(udp_sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&opt, sizeof(opt));<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值