使用select实现的UDP/TCP组合服务器

独立的TCP服务器和UDP服务器,可以找到很多例子,但如果一个服务希望在同一个端口上及提供TCP服务,也提供UDP服务,写两个服务端显然不是一个好的办法,也不利于以后的维护,本文将把UDP服务器和TCP服务器合并成一个服务器,该服务器既可以提供UDP服务也可以提供TCP服务,本文将给出完整的源代码。

1. 基本流程

  • 本示例一共有三个程序,tcp/udp服务器:tu-server.c,tcp客户端:t-client.c和udp客户端u-client.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
    int tcp_fd = socket(AF_INET, 

你可能感兴趣的:(网络编程,C语言,Linux相关,udp,tcp/ip,服务器,网络编程,select)