2

我正在尝试编写一个 VPN 服务器,多个客户端可以在虚拟网络上相互连接。所以我需要一个线程服务器来同时向/从客户端发送和接收数据。可以为每个客户端创建一个隧道接口,它代表客户端在服务器上的虚拟接口。

我有两种使用select()函数在服务器上读取/写入隧道的解决方案:

  1. 使用单个线程调用select([tun0,tun1,tun2],[tun0,tun1,tun2],[])所有隧道的函数,并使用缓冲区来阻止流量。
  2. select([tun0],[tun0],[])在特定客户端的线程上单独调用函数。

我的问题是:哪种方式更好?

4

0 回答 0