使用select实现的UDP/TCP组合服务器
创始人
2024-06-03 00:31:53

在以前的文章中,我们给出过UDP服务器和TCP服务器的例子,本文将把UDP服务器和TCP服务器合并成一个服务器,该服务器既可以提供UDP服务也可以提供TCP服务,本文将给出完整的源代码。

1. 基本流程

  • 本示例一共有三个程序,tcp/udp服务器:tuserver.c,tcp客户端:tclient.c和udp客户端uclient.c

  • 服务器端程序的基本思路是:在程序中为tcp服务和udp服务各建立一个socket,将这两个socket放入readfds中,并将参数传递给select(),当readfds中(也就是tcp或者udp socket)的某一个有数据发过来(udp)或者有客户端连接请求(时),select()将返回,程序判断是哪个socket需要处理然后根据需要进入TCP处理程序或者UDP处理程序处理socket事件;

  • 本例中,服务器端做了简单化处理,收到客户端信息后,并不作处理,对TCP客户端,回应"Hello TCP Client",对UDP客户端,则回应"Hello UDP Client";

  • 服务器端程序流程

    1. 建立一个用于侦听TCP连接请求的TCP socket
    2. 建立一个用于接收UDP数据的UDP socket
    3. 将这两个socket均绑定到服务器的地址上
    4. 在TCP socket上侦听
    5. 将TCP socket和UDP socket均加入到一个空的描述符集中
    6. 调用select()直至其中一个socket有可读数据
    7. 如果是TCP客户端发

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...