C# socket再次bind端口被占用解决方法

您所在的位置:网站首页 readline阻塞怎么解决 C# socket再次bind端口被占用解决方法

C# socket再次bind端口被占用解决方法

2023-06-12 09:54| 来源: 网络整理| 查看: 265

其实我们要实现端口复用很简单,我们只要使用SetSocketOption函数设置Socket选项就可以了。MSDN是这样解释的: Socket 选项确定当前 Socket 的行为。对于具有 Boolean 数据类型的选项,指定非零值可启用该选项,指定零值可禁用该选项。对于具有整数数据类型的选项,指定适当的值。Socket 选项按照协议支持程度来分组。

我们来看看这个函数是怎么用的:

public void SetSocketOption (     SocketOptionLevel optionLevel,     SocketOptionName optionName,     int optionValue ) 参数 optionLevel SocketOptionLevel 值之一。

optionName SocketOptionName 值之一。

optionValue 该选项的值。

以上参数大家可以去看看MSDN。我这里就不多讲了。

在这里我们optionLevel 参数传SocketOptionLevel.Socket;optionName参数传SocketOptionName.ReuseAddress;optionValue参传一个非零值,我传的是True,如果要禁用的话,就传False。

如:

socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 具体我们看看下面的代码:

我们首先建立第一个Socket:

        Socket socket1;         IPEndPoint localEP = new IPEndPoint(IPAddress.Any, 20000);         socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);         socket1.Bind(localEP); 再建立第二个Socket:

        Socket socket2         IPEndPoint localEP = new IPEndPoint(IPAddress.Any, 20000);         socket2= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);         socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);        //请注意这一句。ReuseAddress选项设置为True将允许将套接字绑定到已在使用中的地址。         socket2.Bind(localEP); 这样Socket1和Socket2便绑定在同一个端口上了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3