c# 解决Socket问题——由于目标机器积极拒绝,无法连接
时间:2022-03-18 14:51
关于单机出现这种问题不多赘述,主要阐述服务机和客户机出现这种问题的解决办法。
1.检查防火墙
这种问题出现的最多,特别是你的服务机还是买的各家的云产品,比如阿里云就是到防火墙中添加出入站规则,Azure则是有个对应的出入站配置。将你的TCP和UDP对应使用的端口打开。如果觉得麻烦可以将1—65535端口都打开。这里特别说下Azure会定期检查你的服务机的不安全行为,可能回擅自将你打开所有端口的配置删除。具体操作不赘述,网上一大堆添加防火墙规则的教程。
2.检查服务机端口是否被占用。(意义不大)
第二种问题的几率很小,因为你的服务端程序起来的时候如果端口被占用或直接报错。所以如果起来,但是没报错,基本不会是端口占用问题,不过以防万一可以打开cmd,使用"netstat -an"命令查看活动的端口号,看看自己的服务器端口是否正在被监听。
3.套接字绑定ip问题
目前网上大多数demo的写法都是绑定的"127.0.0.1"这是非常不正规的写法,因为是大多都是单机demo,不会出现问题,但是一旦分开就暴露出来了,所以正规的写法应该"你的Socket套接字对象.Bind(new IPEndPoint(IPAddress.Any, port));"
将127.0.0.1改成IPAddress.Any则问题解决。