首页 新闻 会员 周边 捐助

C# SOCKET 多线程 相关问题:如可在后台代码判断服务器是否存在某端口(例如:9091)

0
悬赏园豆:100 [已解决问题] 解决于 2014-06-12 11:25

昨天刚接触socket 这一块,众高手大神先别喷小虾我 。。。。。现在有个问题想让大家帮我解决一下。

我有个批处理用来创建一个服务(例如:端口9090),可以指定端口号(但只能创建一个服务)用来监听客户端的四个通道。。(描述不够专业严谨,知道那么回事就好了)

现在需求变动,希望 客户端的这四个通道 分别由 2个服务 (9090,9091)来监听 ,于是我改了客户端的源代码,分别对应 服务9090、9091。

因为我批处理只能创建一个服务9090,9091不存在,运行之后报异常 (9091,目标服务器积极拒绝访问)。。。我希望看到的效果是即时9091 连接失败,能保证 9090 连接正常就行,所以 我这里需要在 代码 判断 端口号为9091的服务是否存在。。。。

 

以上类似情况有同学遇到过吗?请帮帮小虾。。。万分感激

吴祎珂的主页 吴祎珂 | 初学一级 | 园豆:27
提问于:2014-06-12 10:05
< >
分享
最佳答案
0

你建个socket连接到目标.连不上,就当不存在了.是问的这个吗

收获园豆:100
吴瑞祥 | 高人七级 |园豆:29449 | 2014-06-12 10:07

是, 但是 C#代码的connet()是void 函数 。。连接失败的时候 会有异常, 一遇到异常  我另外一个可以正常连接的 通道 也失败了, 所以 我想  在 connet 之前 判断 目标端口(9091)是否开启了

吴祎珂 | 园豆:27 (初学一级) | 2014-06-12 10:10

@吴祎珂: 你写一个方法用来测试终点是否可到达的.在方法里try起来.就行了

吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-12 10:25
其他回答(1)
0

我想问的是,你提到连接 9091 失败后得到错误信息“目标服务器积极拒绝访问”,那么“一遇到异常  我另外一个可以正常连接的 通道 也失败了”中另外一个的错误信息也是“目标服务器积极拒绝访问”吗?

Launcher | 园豆:45050 (高人七级) | 2014-06-12 11:23

不是,遇到异常之后 程序运行完,但是另外一个9090 的也连接不了了。。。你明白我的意思吗?。。问题已经解决

支持(0) 反对(0) 吴祎珂 | 园豆:27 (初学一级) | 2014-06-12 11:24

@吴祎珂: 连接不了,会将 SOCKET 错误码通过异常返回给你。根据一楼的提示你解决了问题,那么可以肯定不是“连接不了”,而是其它线程异常导致连接 9090 端口的代码没有正确执行而已。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-06-12 11:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册