socket错误10048说明
qq:9611153 微信lgs9611153
时间:2010-15 19:02:39
背景:
这是一个曾经遇到的问题,记录了下来。
问题相关:
10048 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
所需资源:
Vc,socket
说明:
新版的客户端在登录的时候与服务器进行连接的时候socket有bind固定的端口(旧版本没有bind固定端口,之所以这样做是因为之前你们反应登录的时候会出现用户已经登录的情况,经过与服务器端商量才决定这样的)。
在Windows下,系统会将每个连接(包含已经被关闭的连接)所占用的端口维持2个TTL(约120s),才进行资源释放进行下次使用。
也许你会问为什么不是每次出现10048的错误,原因一有可能是你连续登录的时间已经超过120S,原因二有可能是客户端logout VMS的时候VMS先将之前的链接关闭。
还有之前为什么不会出现10048的错误,是因为之前客户端socket没有绑定固定端口,而是由windos随机分配的端口,这样出现10048错误的概率就大大降低。 但是Windows限制本地端口总数为5000个,我们做测试可以发现如果连续不停的connect当windows将5000个端口都用完的话再connect也会出现10048的错误。