IP地址127.0.0.1和0.0.0.0的区别

一直以来都以为 127.0.0.1 和 0.0.0.0 都是表示本机IP 地址,直至上一次在C# 中写一个UDP 通信的程序时遇到了问题。

先上代码:

// 实名发送
IPEndPoint localIpep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25555);     // 本机IP,指定的端口号                                                                                           
udpcSend = new UdpClient(localIpep);
//
string message = "this is a UDP message";
byte[] sendbytes = Encoding.Unicode.GetBytes(message);
IPEndPoint remoteIpep = new IPEndPoint(IPAddress.Parse("192.168.1.x"), 10000); // 发送到的IP地址和端口号
udpcSend.Send(sendbytes, sendbytes.Length, remoteIpep);

上面的代码在执行到udpcSend.Send() 时会抛出异常:System.Net.Sockets.SocketException:“向一个无法连接的网络尝试了一个套接字操作。”

原因分析:

导致异常的地方,就是在指定本机IP 地址和端口号 localIpep 的值时,不能用127.0.0.1,而应该是0.0.0.0。

127.0.0.1是回送地址,协议立即返回不进行任何网络传输。

https://blog.csdn.net/u012814696/article/details/55098249

127.0.0.1 是一个环回地址,并不表示“本机”。0.0.0.0才是真正表示“本网络中的本机”。

在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。 比如我有一台服务器,一个外网地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我之绑定了内网地址,那么通过外网地址就不能访问。 所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。

上述代码是UDP 的客户端,也是一样的道理。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值