用socket绑定网络端口时候出现错误,“使用了与请求的协议不兼容的地址”。 这个错误时由于可能获取了多个IP地址,且有地址采用的是IPV6协议。
必须筛选出IPV4的地址,然后再去绑定网络端口。
代码如下:
string hostName = Dns.GetHostName(); //主机名
IPAddress[] ips = Dns.GetHostAddresses(hostName); //主机网卡的IP列表
IPAddress HostIp=ips[0]; //保存主机ip
//筛选IP
foreach (IPAddress ip in ips)
{
//筛选出IPV4地址
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
HostIp = ip;
}
}
//创建一个网络端点
IPEndPoint iep = new IPEndPoint(HostIp, 82);
//创建服务端服务端套接字
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//将套接字与网络端点绑定
serverSocket.Bind(iep);
//将套接字置为侦听状态,并设置最大队列数为10