ServerSocket默认邦定IP实现过程详解

 更新时间:2020年10月20日 10:41:59   作者:cuisuqiang  
这篇文章主要介绍了ServerSocket默认邦定IP实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用

开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以。

因为对于服务器来说,有时它不止一块网卡,而我们系统一定是通过指定的IP和端口进行通信的,所以服务端所使用的IP和端口都需要定义配置文件。

那么在平常测试时,在没有指定IP的情况下,ServerSocket到底邦定到哪里了?

在这种情况下,服务器会把此端口绑定到0.0.0.0上面,即在所有IP上面都绑定,即能在每个ip上面收到请求。至于0.0.0.0是什么,这里就不说了。

下面是一个测试程序,通过如下程序即可看到到底是怎么样的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package test;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Test {
    public static void main(String[] args) throws Exception {
        SocketClient client = new SocketClient();
        new Thread(client).start();
         
        ServerSocket serverSocket = new ServerSocket();
        serverSocket.bind(new InetSocketAddress(8888));
//      serverSocket.bind(new InetSocketAddress("127.0.0.1",8888));
//      serverSocket.bind(new InetSocketAddress("192.168.1.100",8888));
        System.out.println(serverSocket.toString());
        serverSocket.accept();
    }
}
class SocketClient implements Runnable{
    public void run() {
        try {
            Thread.sleep(2000);
            try {
                Socket socket = new Socket("127.0.0.1", 8888);
                System.out.println("127.0.0.1 成功" + socket.toString());
            } catch (Exception e) {
                System.err.println("127.0.0.1 失败");
            }
            try {
                Socket socket = new Socket("192.168.1.100", 8888);
                System.out.println("192.168.1.100 成功" + socket.toString());
            } catch (Exception e) {
                System.err.println("192.168.1.100 失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

此时的打印结果是:

ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8888]
127.0.0.1 成功Socket[addr=/127.0.0.1,port=8888,localport=59213]
192.168.1.100 成功Socket[addr=/192.168.1.100,port=8888,localport=59214]

使用127.0.0.1时打印结果:

ServerSocket[addr=/127.0.0.1,port=0,localport=8888]
127.0.0.1 成功Socket[addr=/127.0.0.1,port=8888,localport=59416]
192.168.1.100 失败

使用192.168.1.100时打印结果:

ServerSocket[addr=/192.168.1.100,port=0,localport=8888]
127.0.0.1 失败
192.168.1.100 成功Socket[addr=/192.168.1.100,port=8888,localport=59429]

可以看到默认邦定到的是0.0.0.0,此时使用任何能标记到本台电脑的IP都可以访问到8888端口。

当然,这也不是双网卡的验证,因为还是在一个网卡上玩。有条件的可以到刀片机上小测一把。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://www.iteye.com/blog/cuisuqiang-2037769

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • Zookeeper 单机环境和集群环境搭建

    Zookeeper 单机环境和集群环境搭建

    这篇文章主要介绍了Zookeeper 单机环境和集群环境搭建过程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 阿里云申请的 CA Wosin 证书,在Windows iis下导入证书的步骤分享

    阿里云申请的 CA Wosin 证书,在Windows iis下导入证书的步骤分享

    这篇文章主要介绍了阿里云申请的 CA Wosin 证书,在Windows iis下导入证书的步骤分享,需要的朋友可以参考下
    2017-03-03
  • WampServer运行呈橙色该怎么解决

    WampServer运行呈橙色该怎么解决

    这篇文章主要给大家介绍了关于WampServer运行呈橙色该怎么解决的相关资料,wampserver一直是橙色的,表示服务没有完全开启,可能是Apache服务器没有启动,文中给出了详细的解决办法,需要的朋友可以参考下
    2023-09-09
  • CentOS服务器拒绝SSH登录的解决方法

    CentOS服务器拒绝SSH登录的解决方法

    这篇文章主要介绍了CentOS服务器拒绝SSH登录的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • selenium+chromedriver在服务器运行的详细教程

    selenium+chromedriver在服务器运行的详细教程

    这篇文章主要介绍了selenium+chromedriver在服务器运行的详细方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Rsync命令参数详解

    Rsync命令参数详解

    rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明
    2013-03-03
  • iisapp.vbs iis pid了解对应的网站或应用池

    iisapp.vbs iis pid了解对应的网站或应用池

    有时候突然发现某个w3wp.exe进程,占用较大的自由,想看看是哪个网站,然后再解决问题。下面是具体的方法。
    2009-10-10
  • 分享几款linux下常见的vps控制面板

    分享几款linux下常见的vps控制面板

    VPS主机控制面板主要是用来控制和管理VPS服务器的,一般来说如果想要将VPS主机共享出来给多个人使用的话,我们就会采用类似于Cpanel、Virtualmin等主机控制面板。如果VPS主机只是一个人使用的话部落建议还是不要使用主机控制面板,以免带来不必要的安全隐患
    2017-07-07
  • CentOS环境下单独安装apachebench的方法

    CentOS环境下单独安装apachebench的方法

    这篇文章主要介绍了CentOS环境下单独安装apachebench的方法,分析了apachebench的安装步骤与相关注意事项,需要的朋友可以参考下
    2016-10-10
  • Cobbler 批量安装操作系统的配置方法

    Cobbler 批量安装操作系统的配置方法

    Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像
    2016-08-08

最新评论