如何关闭已经打开的端口?System.Net.Sockets.SocketException: 通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次

plean 2005-09-26 01:13:04
大家好,我现在遇到了这样的问题,就是当端口已经打开时,会报这个错误:System.Net.Sockets.SocketException: 通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次

我想在新建socket时,能不能先进行判断,如果我要用的端口如10001已经打开,我就关闭它然后再执行程序,不知道这如何实现?

以下是我的程序:

private static IPAddress LocalAddress = IPAddress.Parse("10.10.82.18");
private static int LocalPort = 10001;

private void Send( String message)
{
UdpClient sender = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(GroupAddress,GroupPort);

try
{
byte[] bytes = Encoding.ASCII.GetBytes(message);

Socket server= new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);

IPEndPoint ipep = new IPEndPoint(LocalAddress,LocalPort);

server.Bind(ipep);//这里报的错
...
...
}
catch (Exception e)
{
}

...全文
1164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhy0101 2005-09-26
  • 打赏
  • 举报
回复
你是在send里进行的端口邦定,也就是每次执行send方法时就会建立一个socket,如果没有在退出send时关闭socket,就会报错了。建议你:不要每次都建立socket,而是在程序一开始就建好,然后每次在send里使用,程序结束要关闭socket。对于现在的代码你写的不全,可以在catch后加上
finally
{
server.Close()
}
试试,保证一定关闭socket。
YAOHE 2005-09-26
  • 打赏
  • 举报
回复
一个端口,在一个时间里,只能有一个监听,可以有多个连接!~
flyboy20 2005-09-26
  • 打赏
  • 举报
回复
呵呵 帮顶
lookfeng 2005-09-26
  • 打赏
  • 举报
回复
如果是别的应用打开的,是不能关闭的吧

否则,你直接找到那个打开端口的socket,然后close不就OK了
plean 2005-09-26
  • 打赏
  • 举报
回复
ding
plean 2005-09-26
  • 打赏
  • 举报
回复
我也是这个意思,就是强制关闭,无论它是否打开。
但是如何关闭端口呢,我好像没有找到直接关闭的方法阿
dragonfly001 2005-09-26
  • 打赏
  • 举报
回复
簡單的方法就是建立連接前,關閉這個端口,無論它現在是否已經打開
plean 2005-09-26
  • 打赏
  • 举报
回复
有人知道吗?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧