Socket指定IP无法Bind

起因

原先同事在微信上发消息,问有没有遇到Socket绑定IP,无法绑定,具体就是开机时访问不到指定的IP的,瞬间就想到是不是多网卡引起的,由于原先在医疗行业,很多时候都会加装USB网卡,这种网卡是免驱动的,在开机的时候,系统会有加载USB网卡的过程.如果程序设置为开机启动,这个时候可能网卡驱动还没加载完成,程序内给Socket指定IP绑定的话,这个时候是无法完成绑定的.

解决无法指定IP绑定的问题

class Program
{
    static async Task Main()
    {
        var server = new Socket(SocketType.Stream, ProtocolType.Tcp);

        IPEndPoint ip = new IPEndPoint(IPAddress.Any, 8099);  //不指定具体IP,使用IPAddress.Any(代表任意地址,多个网卡时候使用)

        server.Bind(ip);
        server.Listen(100);
    }
}

解决问题的办法: 就是不指定具体IP地址,由操作系统处理的.这样不指定具体IP,即使USB网卡驱动没有加载完成,也不会影响Socket绑定的.

秋风 2021-06-06