昨天刚接触socket 这一块,众高手大神先别喷小虾我 。。。。。现在有个问题想让大家帮我解决一下。
我有个批处理用来创建一个服务(例如:端口9090),可以指定端口号(但只能创建一个服务)用来监听客户端的四个通道。。(描述不够专业严谨,知道那么回事就好了)
现在需求变动,希望 客户端的这四个通道 分别由 2个服务 (9090,9091)来监听 ,于是我改了客户端的源代码,分别对应 服务9090、9091。
因为我批处理只能创建一个服务9090,9091不存在,运行之后报异常 (9091,目标服务器积极拒绝访问)。。。我希望看到的效果是即时9091 连接失败,能保证 9090 连接正常就行,所以 我这里需要在 代码 判断 端口号为9091的服务是否存在。。。。
以上类似情况有同学遇到过吗?请帮帮小虾。。。万分感激
你建个socket连接到目标.连不上,就当不存在了.是问的这个吗
是, 但是 C#代码的connet()是void 函数 。。连接失败的时候 会有异常, 一遇到异常 我另外一个可以正常连接的 通道 也失败了, 所以 我想 在 connet 之前 判断 目标端口(9091)是否开启了
@吴祎珂: 你写一个方法用来测试终点是否可到达的.在方法里try起来.就行了
我想问的是,你提到连接 9091 失败后得到错误信息“目标服务器积极拒绝访问”,那么“一遇到异常 我另外一个可以正常连接的 通道 也失败了”中另外一个的错误信息也是“目标服务器积极拒绝访问”吗?
不是,遇到异常之后 程序运行完,但是另外一个9090 的也连接不了了。。。你明白我的意思吗?。。问题已经解决
@吴祎珂: 连接不了,会将 SOCKET 错误码通过异常返回给你。根据一楼的提示你解决了问题,那么可以肯定不是“连接不了”,而是其它线程异常导致连接 9090 端口的代码没有正确执行而已。