日期:2014-05-17  浏览次数:20953 次

急!急!急~~~ 由于目标机器积极拒绝,无法连接
本人调试一本c#写的Socket服务端时,如果一台客户端写一个与服务端连接发送数据,再断开连接的循环,运行客户端执行循环,再CTL+C关闭客户端,如此循环手动操作,有概率出现,客户端再连接不上服务端,返回操作异常:”由于目标机器积极拒绝,无法连接。“
请哪位遇到过类似情况的大侠指点一下迷津,万分感谢~~~
------最佳解决方案--------------------
你在客户端的接收和传输功能应该是做在线程上面吧,估计你线程中的有些资源没有释放,你断开的时候释放下当前接收传输线程,估计就没有这种问题了

------其他解决方案--------------------
引用:
我想是我表达的不够清楚吧。
问题是这样的:这里有一个C#写的异步传输的socket通讯服务端,功能就是接受客户端发来的消息,然后返回一个消息给客户端,再断开连接。如果有很多客户端同时向服务端发送请求,服务端就有概率被卡住,无法再接受其他客户端发送来的请求,而且是一直卡住(服务端进程没有挂掉)
有没有遇到这种情况的朋友呢???
为啥要断开连接呢?难道你的客户端连接上了服务端就要断开?
------其他解决方案--------------------
遇到过这样的问题,可能是访问的人过多,过一段时间在访问
------其他解决方案--------------------
我也觉得是服务端没有监听的原因 服务端没监听 客户端连接的时候就会报这个错 
------其他解决方案--------------------
引用:
需要保证服务器端一直处于监听状态

+1

小于1024的端口号大多数都已经被占用或者预留作特殊用途了 http://baike.baidu.com/view/642103.htm
服务端可以开异步线程来处理业务,以保证及时处理新收到的请求
------其他解决方案--------------------
自己顶一下,坐等牛人出现~~~
------其他解决方案--------------------
ip不正确或端口未开启,在不就看下是否网络连接上了。  一般前者的可能性大。
------其他解决方案--------------------
需要保证服务器端一直处于监听状态
------其他解决方案--------------------
引用:
你在客户端的接收和传输功能应该是做在线程上面吧,估计你线程中的有些资源没有释放,你断开的时候释放下当前接收传输线程,估计就没有这种问题了
请问什么情况会导致线程的资源没有释放,以及如何释放当前接受的传输线程呢??

------其他解决方案--------------------


没玩过

帮顶
------其他解决方案--------------------
嗯,Socket,学习下
------其他解决方案--------------------
引用:
引用:你在客户端的接收和传输功能应该是做在线程上面吧,估计你线程中的有些资源没有释放,你断开的时候释放下当前接收传输线程,估计就没有这种问题了请问什么情况会导致线程的资源没有释放,以及如何释放当前接受的传输线程呢??

可能你断开的时候,只是关闭了套接字,但是没有立即释放线程,也就是说:虽然关掉套接字,线程也会随着释放,但是这个释放是通过gc释放的,而gc释放的话就需要一些时间,当你连续点击连接和断开的时候,有可能gc没有释放完上个线程的资源,所以。。。
还有可能是服务器上的监听自动关闭了,我想想可能是这个原因,你调试下服务器端看看
------其他解决方案--------------------
引用:
引用:
引用:你在客户端的接收和传输功能应该是做在线程上面吧,估计你线程中的有些资源没有释放,你断开的时候释放下当前接收传输线程,估计就没有这种问题了请问什么情况会导致线程的资源没有释放,以及如何释放当前接受的传输线程呢??
可能你断开的时候,只是关闭了套接字,但是没有立即释放线程,也就是说:虽然关掉套接字,线程也会随……
怎么确定服务器端的监听是否自动关闭呢? 
如果把listen()的参数写的很小比如2,就不会出现这个问题了;相反如果把listen()的参数写的很大比如200,就很容易出现这个问题。
------其他解决方案--------------------
我想找出问题出在哪里,但是本人对Socket只了解点皮毛,所以不知道该如何去找对应的问题。
比如:如何查看服务器的连接数?如何查看TCP连接队列和TCP等待连接的队列?
------其他解决方案--------------------
引用:
引用:引用:
引用:你在客户端的接收和传输功能应该是做在线程上面吧,估计你线程中的有些资源没有释放,你断开的时候释放下当前接收传输线程,估计就没有这种问题了请问什么情况会导致线程的资源没有释放,以及如何释放当前接受的传输线程呢??
可能你断开的时候,只是关闭……

你可以调试下服务器端看看具体的是什么造成的,还有你的端口号最好是大于1024,呵呵
------其他解决方案--------------------
引用:
引用:
引用:引用:
引用:你在客户端的接收和传输功能应该是做在线程上面吧,估计你线程中的有些资源没有释放,你断开的时候释放下当前接收传输线程,估计就没有这种问题了请问什么情况会导致线程的资源没有释放,以及如何释放当前接受的传输线程呢??