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了,为什么还会报错,求高手指点,应该怎么处理(不要告诉我换端口)。谢谢!!! 展开
{
ConnServer.Close();
}
if (udpClient != null)
{
udpClient.Close();
}
if (ConnServer == null)
{
ConnServer = new UdpClient(6899); //多运行几次,每次都是这里报错
}
我打开一个小窗口时有个线程就会执行上面的代码。第一次打开窗口运行正常,但我关闭原来窗口重新开一个的时候,就报错“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”
ConnServer 已经是null了,为什么还会报错,求高手指点,应该怎么处理(不要告诉我换端口)。谢谢!!! 展开
5个回答
展开全部
问题就出在udpClient,这个应该也是你实例化的一个new UdpClient(6899),
在if (ConnServer == null)
{
ConnServer = new UdpClient(6899);
}
之前一定要先关闭掉udpClient.Close(); 可能是你之前的判断或者关闭的时候出了问题,没能正确关闭,导致再次打开时会报错
在if (ConnServer == null)
{
ConnServer = new UdpClient(6899);
}
之前一定要先关闭掉udpClient.Close(); 可能是你之前的判断或者关闭的时候出了问题,没能正确关闭,导致再次打开时会报错
追问
我前面的代码已经有了这个啊
if (udpClient != null)
{
udpClient.Close();
}
追答
udpClient是UdpClient的一个实例 你还要检查别的地方是不是有这个实例,都需要关闭掉
二来就是看下你关闭的方法有没有正确,或者关闭后是否存在延迟,
使用原理能明白就行,剩下的就是细心检测啦
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的udp开了以后没有正确关掉,端口就被占用了,记得用完了释放
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ConnServer.Close();
后面加一句
ConnServer=null;
后面加一句
ConnServer=null;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ConnServer 变成null之前,你做个UdpClient的closed看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询