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

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

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

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

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

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端口。

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

java启动绑定网卡_ServerSocket 默认邦定IP相关推荐

  1. java socket绑定ip_ServerSocket 默认邦定IP

    转自:http://cuisuqiang.iteye.com/blog/2037769 开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以. 因为对于服务器来说 ...

  2. 服务器修改ip socket,ServerSocket默认邦定IP实现过程详解

    开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以. 因为对于服务器来说,有时它不止一块网卡,而我们系统一定是通过指定的IP和端口进行通信的,所以服务端所使用的 ...

  3. VK1623,DICE(邦定COB)/COG(绑定玻璃用)段码LCD液晶显示驱动芯片,支持最大48EGx8COM

    型号:VK1623 品牌:永嘉微电/VINKA 封装形式:LQFP100/QFP100/DICE/COG :DICE(邦定COB)/COG(绑定玻璃用) 年份:新年份 KPP2322 概述 VK162 ...

  4. 裸片IC液晶驱动多种封装选择VK1621SS香熏机/计算器/额温枪段码LCD液晶显示驱动IC,DICE(邦定COB)/COG(绑定玻璃用)

    型号:VK1621SS 品牌:永嘉微电/VINKA 封装形式:SSOP48/ LQFP48/LQFP44/SDIP28/DICE 裸,片:DICE(邦定COB)/COG(绑定玻璃用) 年份:新年份 K ...

  5. centos 6.1_64位系统 双网卡邦定

    centos 6.1_64位系统 双网卡邦定 下面是设定一个ip为192.168.0.223的负载平衡双网卡 vi /etc/sysconfig/network-scripts/ifcfg-bond0 ...

  6. java xms xmx 默认值,JVM启动参数-Xmx的默认值是多少?

    你也可以在程序里试试打印 Runtime.getRuntime().maxMemory() 的值 看看是多少 官网说明: https://docs.oracle.com/javase/8/docs/t ...

  7. 修改java启动参数_如何修改jvm启动参数

    用java命令查看. 用java -option进行修改参数. 还有tomcat,eclipse启动时通过配置文件加载的. 详细如下: 安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Ja ...

  8. Linux67 绑定网卡【bonding和team】

    Linux 网卡绑定 在RHEL 7 之前,网卡绑定常用的是bonding模块,在RHEL7开始,支持使用team作网卡绑定,但在RHEL7中,bonding依然可用.以下主要介绍bonding模块配 ...

  9. Java启动参数与内存调优一些学习笔记

    转载自  Java启动参数与内存调优一些学习笔记 .参数的含义 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JV ...

最新文章

  1. Makefile的补充学习
  2. 计算机if函数and,excel if_EXCEL函数IF()+()和IF(and)区别是什么?
  3. jenkins配置小结
  4. 复杂对象的组装与创建——建造者模式
  5. vb 通过php连接mysql数据库连接_PHP连接MySQL数据库的几种方法
  6. 一个暂时无法理解的bug
  7. uniapp 表单提交图片跟其他填写数据_记录第一次实现表单数据提交到数据库
  8. 想成为测试工程师,这7件事你必须先知道
  9. 经典的观点挖掘算法(文本挖掘系列)
  10. mysql identity_insert_由MYSQL SET IDENTITY_INSERT tablename ON;准确方法
  11. sony手机刷linux,索尼Z3 Z3C 5.0系统刷recovery教程_Sony Z3第三方recovery
  12. select获取下拉框的值 下拉框默认选中
  13. ps教程全套|零基础教程-高阶教程快速入门
  14. C#:办公用品管理软件项目总结
  15. android rxbus github,RxBus-实现EventBus之Sticky
  16. 正则表达式(以校验qq是否合法等为例)
  17. 计算机编程的11种趋势:
  18. 深度学习 -- SSD 算法流程详解
  19. kubernetes中的PV、PVC
  20. 炫酷 RGB 之.NET nanoFramework 点灯大师

热门文章

  1. 二维码(生成以及扫一扫)
  2. [GIS原理] 9 数字地形分析DTA、数字地形模型DTM、数字高程模型DEM、数字地表模型DSM、不规则三角网TIN
  3. Ext_多行文本输入框_Ext.form.TextArea
  4. python绘制三维地形_三维数字场地模型(上篇):Civil3D 地形的生成
  5. [附源码]java毕业设计归元种子销售管理系统
  6. 班农注定落得如此下场
  7. 【日常】利用代理IP伪装进行多进程爬虫
  8. Docker “pull“命令获取镜像,讲道理你真的会吗?
  9. 成功鲜有偶然:一览IT名人的教育成长经历
  10. 通过手机型号查找相应UA信息