[解决]通常每个套接字地址只允许使用一次
我们在做socket的开发的时候,经常会遇到这个错误:通常每个套接字地址 (协议/网络地址/端口)只允许使用一次
错误指示很明确:通信端口被占用了,导致通信无法进行。
但为什么端口被占用了呢?什么端口被占用了?
这里其实有一个大前提:你的程序中有没有指定socket通信端口?
如果指定了,解决办法很简单,每次通信完成手动释放就行了。下次通信重新建立连接。
如果没有指定,说明以下几点(可能你命中的是其中一点):
1、你的服务器开启的端口数太少;
2、连接释放等待时间太长;
3、你的socket通信并发量太大。
以上几点导致你服务器端口被占满,下次通信无空闲端口可用,程序就抛出了“通常每个套接字地址 (协议/网络地址/端口)只允许使用一次”的异常。
原因找到了,解决起来也就简单了,针对1、2两点,我们修改服务器配置就行了。
如果你的服务器是windows2003或xp,默认端口只开到5000,而且超时等待默认是240秒(这里有官方说明:http://msdn.microsoft.com/zh-cn/library/aa560610(v=bts.10).aspx),我们只需把服务器端口全打开,并且根据自己的情况调整超时时间。
具体操作:
1、打开注册表(运行命令:regedit)
2、找到注册表节点:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3、新增2项(如果已存在就修改项值),值对应的都是10进制数字
MaxUserPort=65534 (端口数设到最大)
TcpTimedWaitDelay=5 (超时等待是5秒,根据个人需要)
4、重启服务器
搞定!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2016-01-08 css3 transition effect(其它效果)