TcpClient连接服务器后,如何释放服务器端口??

sjmdld900612 2018-08-10 10:18:02
实例化一个TcpClient,连接服务器,连接成功后释放该TcpClient实例,再实例化一个TcpClient,连接同一个服务器端口,此时会报错:套接字地址只能使用一次(服务器端),请问:
在TcpClient实例释放的过程(Dispose)过程中,为什么只释放掉了客户端绑定的端口而没有释放服务器的资源?
有兴趣的一起讨论以下,感谢啦!
...全文
637 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulilittle 2018-08-13
  • 打赏
  • 举报
回复
你的客户端bind端口了?客户端 bind 在网络程序中一个很好的做法,但客户端 bind 只需要绑定目标网卡就行,绑定固定端口是错误的,它会造成相同的代码,在 bind 端口的时候出现端口被占用的问题。
  • 打赏
  • 举报
回复
使用 TcpClient 实例访问服务器,它本身就不应该 bind 任何端口。客户端都是使用系统分配的随机的端口来访问服务器的。端口在一段时间之内(例如5分钟)是不会释放的,但是这并不影响你去 new 一堆 TcpClient 对象来访远程服务。

重点在于,有些博客上明明是客户端代码却 bind 本地端口,那是坑爹的代码。
wanghui0380 2018-08-10
  • 打赏
  • 举报
回复
我只能说你的服务器端有问题。在服务器端不存在你人为的new一个client的概念,服务器只存在接受connclient的概念
  • 打赏
  • 举报
回复
同时实例化100个TcpClient连接同一个服务,也不会出错。

出错只能说明你的代码的问题、你是说的很混乱根本不说明白。

110,534

社区成员

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

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

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