100分求使用SuperSocket端口被关闭的问题

时间:2022-02-21 23:52:30
我在一个web项目中使用了SuperSocket.dll,web端是socket服务端,所有连接到这个web项目的都是socket客户端。把web项目挂在IIS下,给它分配了应用程序池,网站一直都能正常运行,里面的socket连接刚开始的时候是好的,所有客户端都能连上,但运行了一段时间后,服务端的socket就自动断了,客户端再次尝试重连的时候就报:由于目标计算机积极拒绝,无法连接。需要回收一下应用程序池才能又正常,服务器是2008的系统,防火墙没有开启,杀毒软件都没有安装。
请问是什么原因导致的,应该如何解决?谢谢

6 个解决方案

#1


100分求使用SuperSocket端口被关闭的问题
被回收了呗,你要把Socket做成静态的,不能被回收的,如果被回收了,你要自动重启Socket。。。

#2


引用 1 楼 wyd1520 的回复:
100分求使用SuperSocket端口被关闭的问题
被回收了呗,你要把Socket做成静态的,不能被回收的,如果被回收了,你要自动重启Socket。。。


我的socket是在Global文件的Application_Start方法里面启动的,并且启动后有定时对当前所有的连接发送心跳包,这样也就是说我的socket时时都是在运行状态,不应该有长时间不动被iis回收的情况才对啊。
就算被iis回收了,应该我只要一访问网站就会被开启,但现在的情况是:服务端socket被端口被关闭后,我打开网站,网站能正常运行,但是socket没有被开启,一定要回收一下应用程序池才行。
求解~

#3


引用 2 楼 fire_fire_fire 的回复:
Quote: 引用 1 楼 wyd1520 的回复:

100分求使用SuperSocket端口被关闭的问题
被回收了呗,你要把Socket做成静态的,不能被回收的,如果被回收了,你要自动重启Socket。。。


我的socket是在Global文件的Application_Start方法里面启动的,并且启动后有定时对当前所有的连接发送心跳包,这样也就是说我的socket时时都是在运行状态,不应该有长时间不动被iis回收的情况才对啊。
就算被iis回收了,应该我只要一访问网站就会被开启,但现在的情况是:服务端socket被端口被关闭后,我打开网站,网站能正常运行,但是socket没有被开启,一定要回收一下应用程序池才行。
求解~


你弄个静态变量了没。要是没有肯定回收了,SOcket写网页上本来就是蛋疼。。会让人模不着门路,之前我也写Socket放IIS上跑,也出现你这样,没招,不过我同事也是同样的方法写在IIS里跑,他的机子就没事,我就觉的怪,,可能IIS要配置什么吧
我的方案是把Socket写成服务省了不少的事。。

#4


“运行了一段时间后”出现的问题,可能你所谓的 SuperSocket 自身的bug,服务线程崩溃、结束了。它不是开源的吗?你可以直接在你的系统中调用它的源代码来测试啊?!

应该刻意去重现问题、去测试它,用不着瞎猜原因。

#5


感谢两位的回答,我再想想其他办法或干脆做成winform程序或服务吧。谢谢

#6


这个应该是IIS的自动清理机制导致的,,无解

#1


100分求使用SuperSocket端口被关闭的问题
被回收了呗,你要把Socket做成静态的,不能被回收的,如果被回收了,你要自动重启Socket。。。

#2


引用 1 楼 wyd1520 的回复:
100分求使用SuperSocket端口被关闭的问题
被回收了呗,你要把Socket做成静态的,不能被回收的,如果被回收了,你要自动重启Socket。。。


我的socket是在Global文件的Application_Start方法里面启动的,并且启动后有定时对当前所有的连接发送心跳包,这样也就是说我的socket时时都是在运行状态,不应该有长时间不动被iis回收的情况才对啊。
就算被iis回收了,应该我只要一访问网站就会被开启,但现在的情况是:服务端socket被端口被关闭后,我打开网站,网站能正常运行,但是socket没有被开启,一定要回收一下应用程序池才行。
求解~

#3


引用 2 楼 fire_fire_fire 的回复:
Quote: 引用 1 楼 wyd1520 的回复:

100分求使用SuperSocket端口被关闭的问题
被回收了呗,你要把Socket做成静态的,不能被回收的,如果被回收了,你要自动重启Socket。。。


我的socket是在Global文件的Application_Start方法里面启动的,并且启动后有定时对当前所有的连接发送心跳包,这样也就是说我的socket时时都是在运行状态,不应该有长时间不动被iis回收的情况才对啊。
就算被iis回收了,应该我只要一访问网站就会被开启,但现在的情况是:服务端socket被端口被关闭后,我打开网站,网站能正常运行,但是socket没有被开启,一定要回收一下应用程序池才行。
求解~


你弄个静态变量了没。要是没有肯定回收了,SOcket写网页上本来就是蛋疼。。会让人模不着门路,之前我也写Socket放IIS上跑,也出现你这样,没招,不过我同事也是同样的方法写在IIS里跑,他的机子就没事,我就觉的怪,,可能IIS要配置什么吧
我的方案是把Socket写成服务省了不少的事。。

#4


“运行了一段时间后”出现的问题,可能你所谓的 SuperSocket 自身的bug,服务线程崩溃、结束了。它不是开源的吗?你可以直接在你的系统中调用它的源代码来测试啊?!

应该刻意去重现问题、去测试它,用不着瞎猜原因。

#5


感谢两位的回答,我再想想其他办法或干脆做成winform程序或服务吧。谢谢

#6


这个应该是IIS的自动清理机制导致的,,无解