我在开发一个客户端软件,该软件在登录前会检查机器的网卡数目,并在窗口中显示出来,允许用户从中选择一个网卡。为了支持这个功能,所以我在进行TCP连接前,connect()前调用了bind()函数将客户端套接字绑定到了用户指定的那个网卡的IP上,现在我遇到的问题是: 机器有两个网卡A和B,A网卡接了网线,B网卡没接网线,当登陆软件后选择使用A网卡时,软件运行正常。
此时关闭软件,然后再次登录,选择B网卡,由于B没接网线,所以bind失败,客户端与服务器连接不上,这是正确的。
再次关闭软件,然后选择A网卡,但此时跟踪调试发现,bind总是失败,返回错误码是10022,解释为:提供了一个无效的参数。
我不明白为什么会这样呢?可以肯定当我第三次登录软件时,bind函数的参数中的地址确实是我选择的A网卡的地址,为什么不让我绑定了呢?A网卡应该是可用的啊。请大家给指点一下啊。
此时关闭软件,然后再次登录,选择B网卡,由于B没接网线,所以bind失败,客户端与服务器连接不上,这是正确的。
再次关闭软件,然后选择A网卡,但此时跟踪调试发现,bind总是失败,返回错误码是10022,解释为:提供了一个无效的参数。
我不明白为什么会这样呢?可以肯定当我第三次登录软件时,bind函数的参数中的地址确实是我选择的A网卡的地址,为什么不让我绑定了呢?A网卡应该是可用的啊。请大家给指点一下啊。
设置地址可重用属性
重新开启之前shutdown
如果是客户端的话,你connect是不成功的。
如果是服务端的话,就不清楚了