ServerSocket 默认邦定IP
转自:http://cuisuqiang.iteye.com/blog/2037769
开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的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端口。
当然,这也不是双网卡的验证,因为还是在一个网卡上玩。有条件的可以到刀片机上小测一把。
ServerSocket 默认邦定IP的更多相关文章
- [WPF系列]-数据邦定之DataTemplate 根据对象属性切换模板
引言 书接上回[WPF系列-数据邦定之DataTemplate],本篇介绍如何根据属性切换模板(DataTemplate) 切换模板的两种方式: 使用DataTemplateSelecto ...
- ASP.NET中数据邦定效率问题的一点看法 - 转载(自由的天空)
在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...
- ionic中 .col : 默认的定宽列
.col : 默认的定宽列 在ionic的栅格中,每一行的各列默认是等宽的,这使得实现一个图片 浏览界面非常简单.下图是instagram app的截图: instagram <!DOCTYPE ...
- 漏洞利用 Exploit---利用默认口令、IP假冒、应用漏洞
漏洞利用 编辑 讨论 本词条由“科普中国”科学百科词条编写与应用工作项目 审核 . 漏洞利用(英语:Exploit,本意为“利用”)是计算机安全术语,指的是利用程序中的某些漏洞,来得到计算机的控制权( ...
- [WPF系列]-数据邦定之DataTemplate简介
引言 WPF 数据模板化模型为定义数据的表示形式提供了很大的灵活性.WPF 控件有支持自定义数据表示形式的内置功能.首先介绍下如何定义Datatemplate,然后再介绍其他数据模板化功能,例如根据自 ...
- vivado自定IP例化的问题,怎么生成VHDL的例化
在tools 下面选中project settings.然后选targat language为VHDL .这样就会生成一个以VHDL语言为模板的ip. 转载:https://zhidao.baidu. ...
- 解决dubbo注册zookeeper默认内网ip注册
前端时间做新项目的时候遇到一个dubbo的一个问题,在我们项目搭建好后使用了其他同事的支付服务,支付服务架构的方式使用了dubbo服务的方式,使用zookeeper作为注册中心,我们新项目使用dubb ...
- [WPF系列]-数据邦定之DataTemplate 对 ItemsControl 进行样式和模板处理
引言 即使 ItemsControl 不是 DataTemplate 所用于的唯一控件类型,将 ItemsControl 绑定到集合仍然很常见. 在 DataTemplate 中有哪些内容一节中, ...
- [WPF系列]-数据邦定之DataTemplate 对分层数据的支持
到目前为止,我们仅讨论如何绑定和显示单个集合. 某些时候,您要绑定的集合包含其他集合. HierarchicalDataTemplate 类专用于 HeaderedItemsControl 类型以显示 ...
随机推荐
- HTML中属性ID和属性NAME有何区别?
今天出美工面试题的时候,David让我加上一道题:HTML中id和name的区别.一听对呀,HTML中id和name有什么区别,只是平时在用,倒没怎么想过,只是那么用了罢了,呵呵,其实在做网页的时候有 ...
- servlet 和filter 的生命周期说明
servlet : 当客户端第一次访问servlet的时候,服务器就会创建servlet实例,servlet 就会执行init方法,每次请求,服务器会开一个新的线程访问servlet中得service ...
- 终端ssh登录mac用shell打包ipa报错:replacing existing signature
终端ssh登录mac用shell打包ipa报错:replacing existing signature 报错原因:login.keychain被锁定,ssh登录的没有访问权限 解决方法:终端敲入 s ...
- ios oc 和 swfit 用dispatch_once 创建单例
网上已经有方法了,我这里就是抄了下,原文链接 http://bj007.blog.51cto.com/1701577/649413 http://blog.csdn.net/u010124617/ar ...
- oracle 学习
一.数据库语言部分1. SQL语言:关系数据库的标准语言2. PL/SQL:过程化语言Procedural Language3. SQL*Plus:简单的报表,操作系统接口 4. Oracle 8.0 ...
- Java for LeetCode 216 Combination Sum III
Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
- WebService及WCF获取客户端IP,端口
wcf获取客户端IP,端口 var context = OperationContext.Current; var properties = context.IncomingMessageProper ...
- linux下U盘文件只读的解决办法
. 在终端运行如下命令 tail -f /var/log/syslog . 插入有只读文件系统故障的U盘 . 观察命令行输出 输出局部如下: Jul :: cslouis-pc kernel: [15 ...
- NYOJ题目806HEIHEI的心情
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAANRCAIAAACumacBAAAgAElEQVR4nOzdrXLrOrjG8XMT5b2Q4l
- js 删除确定
"<td><a href='shanchu.php?c={$v[0]}' onclick=\"return confirm('确定删除么?')\"> ...