c# 为什么报错?“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”

if(ConnServer!=null){ConnServer.Close();}if(udpClient!=null){udpClient.Close();}if(Co... if (ConnServer != null)
{
ConnServer.Close();
}
if (udpClient != null)
{
udpClient.Close();
}

if (ConnServer == null)
{
ConnServer = new UdpClient(6899); //多运行几次,每次都是这里报错

}
我打开一个小窗口时有个线程就会执行上面的代码。第一次打开窗口运行正常,但我关闭原来窗口重新开一个的时候,就报错“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”
ConnServer 已经是null了,为什么还会报错,求高手指点,应该怎么处理(不要告诉我换端口)。谢谢!!!
展开
 我来答
百度网友faadf46
高粉答主

2020-05-05 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:66.8万
展开全部

c# 报错“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”是设置错误造成的,解决方法为:

1、win+r打开运行窗口,输入cmd,按下回车键,进入命令行模式。

2、在命令号中输入命令并按下回车键: netstat -aon|findstr 5037。

3、找到LISTENING项,记录后面的3508,该进程占用了端口。

4、输入命令并回车:tasklist /fi "pid eq 3508"。

5、命令行中输入命令杀死进程: taskkill /pid 3508 /f  ,显示如图所示已经终止该进程。

java发烧友
推荐于2016-05-14 · TA获得超过225个赞
知道小有建树答主
回答量:193
采纳率:100%
帮助的人:147万
展开全部
问题就出在udpClient,这个应该也是你实例化的一个new UdpClient(6899),
在if (ConnServer == null)
{
ConnServer = new UdpClient(6899);
}
之前一定要先关闭掉udpClient.Close(); 可能是你之前的判断或者关闭的时候出了问题,没能正确关闭,导致再次打开时会报错
追问
我前面的代码已经有了这个啊
if (udpClient != null)
{
udpClient.Close();
}
追答
udpClient是UdpClient的一个实例  你还要检查别的地方是不是有这个实例,都需要关闭掉

二来就是看下你关闭的方法有没有正确,或者关闭后是否存在延迟,
使用原理能明白就行,剩下的就是细心检测啦
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2013-01-08 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6242万
展开全部
你的udp开了以后没有正确关掉,端口就被占用了,记得用完了释放
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1f1a785cf
2013-01-08 · 超过18用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:56.3万
展开全部
ConnServer.Close();

后面加一句
ConnServer=null;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友770eb8bca
2013-01-08 · TA获得超过240个赞
知道小有建树答主
回答量:647
采纳率:50%
帮助的人:225万
展开全部
ConnServer 变成null之前,你做个UdpClient的closed看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式