阅读:1360回复:0
wince下IP端口重用的问题
我用winsock写的PDA下的程序,它通过无线网卡和一台PC Server连接。
我首先创建一个socket,设置(setsockopt))它为可以REUSEADDR,又设置了它可以被强制切断(即设置LINGER,其中onfff为1,time为0),然后bind一个本地地址,connect Server后,执行一些操作,然后我打算停止这个连接,于是closesocket。 这时候我的程序并没有关闭,而是重新执行上述操作,即socket->bind->connect,但是执行到connect的时候,就出现10048的错误(通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次。 ) 于是我加上了WSACleanup,没有作用,我甚至在WSAStartup之前加上了WSACleanup,先清除再建立winsock环境,情况依旧。 而且,Client如果是PC的话一切正常,但是如果是PDA的话,就会出错,除非我等待一段时间,或者关闭程序再打开才会正常。 请问LINGER在PDA上无效吗?有什么解决办法吗? 还有,10048的错误不是应该在bind的时候就出现的吗?为什么要一直等到connect才提示出错,是因为我设置了地址可以重用,所以bind没出错,connect才出错吗? 我的server端倒是没有使用LINGER来强制切断,只是closesocket罢了,这点有问题吗?需要两端都用LINGER来强制切断吗? 请高手指点! |
|