使用C#监听单个端口但不同的IP地址,可以通过创建多个Socket对象来实现。
首先,需要引入System.Net命名空间,以便使用相关的网络类。
using System;
using System.Net;
using System.Net.Sockets;
然后,可以编写一个监听函数来实现监听逻辑。以下是一个示例代码:
public static void ListenPort()
{
// 定义要监听的端口号
int port = 8080;
// 获取本地所有的IP地址
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
// 创建一个Socket对象,并设置为监听状态
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, port));
listener.Listen(10);
// 循环遍历所有的IP地址,并开始监听
foreach (IPAddress localIP in localIPs)
{
if (localIP.AddressFamily == AddressFamily.InterNetwork)
{
// 创建一个线程来处理每个IP地址的监听
System.Threading.ThreadPool.QueueUserWorkItem((state) =>
{
Socket client = null;
try
{
// 接受客户端的连接请求
client = listener.Accept();
// 在此处处理与客户端的通信逻辑
// ...
// 关闭与客户端的连接
client.Close();
}
catch (Exception ex)
{
// 异常处理逻辑
Console.WriteLine(ex.ToString());
}
finally
{
if (client != null)
client.Close();
}
});
}
}
Console.WriteLine("监听已启动,等待连接...");
}
上述代码中,首先获取本地所有的IP地址,然后创建一个Socket对象,并绑定到指定的端口上。然后,循环遍历每个IP地址,创建一个线程来处理该IP地址上的监听。在每个线程中,接受客户端的连接请求,并在此处可以编写与客户端的通信逻辑。最后,关闭与客户端的连接。
使用该函数可以实现同时监听多个IP地址上的同一端口。你可以根据实际需求修改端口号和处理逻辑。
这里推荐腾讯云的云服务器(CVM)产品,作为一个可靠、灵活且易于使用的云计算服务,可满足各种规模的业务需求。详情请参考腾讯云云服务器产品介绍:腾讯云云服务器(CVM)。
领取专属 10元无门槛券
手把手带您无忧上云