java.net.ServerSocket 解析
构造
public ServerSocket()
构造一个ServerSocket,但不绑定任何端口,所以也不能接受任何的请求连接。以后可以通过bing()方法来进行绑定。public ServerSocket(int port)
通过一个端口来构造一个ServerSocket对象。
默认的tcp队列大小为50.
默认监听本地所有的ip地址(如果有多个网卡)。
TCP分为全连接队列和半连接队列。这里说的是全连接队列
半连接队列:第一次握手,服务器收到客户端的请求时,该请求连接放到半连接队列中。
全连接队列:已经通过三次握手后,把当前连接信息存放到全连接队列中。全连接队列中的连接等待ServerSocket.accpt()处理。
public ServerSocket(int port, int backlog)
通过一个端口和TCP队列大小来构造一个ServerSocket对象。
默认监听本地所有的ip地址(如果有多个网卡)。public ServerSocket(int port, int backlog, InetAddress bindAddr)
通过一个端口、TCP队列大小和一个InetAddress 来构造一个ServerSocket对象。一个服务器可能有多个网卡,多个ip地址,通过此构造传入一个InetAddress ,可以只监听从此网卡过来的请求连接。
比如:一个电脑上有两个网卡,一个是外网地址,一个是内网地址。为了安全此ServerSocket只允许监听内网ip地址的请求,而不接收外网请求。
bind 方法
通过无参构造的ServerSocket对象,需要bing方法进行绑定操作才能处理客户端的请求。
public void bind(SocketAddress endpoint) throws IOException {bind(endpoint, 50);
}public void bind(SocketAddress endpoint, int backlog) throws IOException {
...
}
- 通过SocketAddress 进行绑定,默认TCP队列大小为50。
- 通过SocketAddress 和 TCP请求队列大小 两个参数 进行绑定。
accept 方法
public Socket accept()
该方法会从全连接队列中获取一个客户端Socket请求。该方法是阻塞方法。如果当前没有请求的连接,则会一直阻塞,直到有客户端连接请求为止。
获取ServerSocket相关信息
- public InetAddress getInetAddress()
获取本地地址,如果本地有多个ip,随机返回一个。 public int getLocalPort()
获取绑定的端口。如果构造ServerSocket中默认端口传入一个0,则是随机生成一个端口,这时就需要使用此方法来获取端口信息。
public SocketAddress getLocalSocketAddress()
返回本地地址和端口。
通过源码发现该方法内部获取本地地址是通过调用getInetAddress()方法进行获取的。获取端口是通过getLocalPort()方法获取的。
使用ServerSocket 判断当前系统已经占用的端口
public static void main(String[] args) throws Exception {for(int port=1; port<65535; port++){try{ServerSocket s = new ServerSocket(port);}catch(IOException e){System.out.println("当前系统中已经使用的端口:"+port);}}
}
运行结果如下:
本人简书blog地址:http://www.jianshu.com/u/1f0067e24ff8
点击这里快速进入简书
GIT地址:http://git.oschina.net/brucekankan/
点击这里快速进入GIT
java.net.ServerSocket 解析相关推荐
- Java爬取解析去哪儿景点信息
前言:这两周在做 Web 课的大作业,顺便琢磨了一下如何使用 Java 从网上获取一些数据,现在写这篇博客记录一下. PS:这里仅限交流学习用,如利用代码进行恶意攻击他网站,和作者无关!!! Java ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- 第一次阅读java,net.ServerSocket
ServerSocket是一个类而不是接口,但是其具体实现由SocketImpl来决定. ServerSocket提供了5个构造函数,其中public修饰的有四个,其实是调用同一个方法.public构 ...
- java中http解析url,java url 编码(解析http请求汉语言地址 )
java url 编码(解析http请求中文地址 ) 在近在做项目的过程中,由于客户那边服务器上提供的有很多中文结构目录.请求要的地址不能正常运行显示出来.下面来分享一下我对http协议处理请求中文的 ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用...
在线演示 本地下载 如果你曾经开发过内容聚合类网站的话,使用程序动态整合来自不同页面或者网站内容的功能肯定对于你来说非常熟悉.通常使用java的话,我们都会使用到一些HTML的解析,例如,httpp ...
- Java 技术篇 - ServerSocket接收http的url请求中包含中文的处理方法,URLDecode与URLEncode,url解码与编码
效果图: 正常接收到中文的请求是这个样子的:%E6%AC%A2%E8%BF%8E%E6%9D%A5%E5%88%B0%E5%B0%8F%E8%93%9D%E6%9E%A3%E7%9A%84%E5%8D ...
- Java 面试知识点解析(七)——Web篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(六)——数据库篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
最新文章
- jQuery知识汇总
- linux系统sql语句报错_如果数据库管理工具1045错误出现在Linux系统中怎么
- 源码编译安装mysql
- HDU - 3410 Passing the Message 单调递减栈
- Angular应用ng build的一些边界情况boundary condition
- Apache之三种工作模式和配置性能优化
- 《javaScript100例|02》超级经典一套鼠标控制左右滚动图片带自动翻滚
- 读C#开发实战1200例子记录-2017年8月14日10:03:55
- 最大k乘积的时间复杂度_惊,我还不会算时间复杂度!
- 【三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1268期】
- Java固定资产管理系统源码
- Linux系统load average异常值处理的trick
- C Primer Plus (第六版) 第十四章_编程练习答案
- Ubuntu远程SSH连接与远程桌面连接
- Total Negative Slack ( TNS ) Worst Negative Slack ( WNS )
- Springboot----项目整合微信支付(处理微信支付回调通知)
- 系统设计时先画用例图还是流程图
- 在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)
- zynq7000 创建fsbl工程,并打开log
- 张飞老师硬件第二十四部--马达驱动--原理图设计①----3LDO电路
热门文章
- html弹窗页面控制大小,使用JS弹出新窗口,并设置窗口的大小和位置等相关属性,传递参数...
- SIGIR 2021 | 推荐系统中的多行为建模
- 岗位推荐 | 微软AI Research Group招聘自然语言处理AI算法研究实习生
- java第五章抽象类与接口5.1-5.3 2020.3.27+31
- java继承和派生4.4- 4.52020.3.24
- 【C语言】字符串函数strtok 按照指定字符串分割
- JDK提供的检测工具
- 数据结构与算法之二分查找法
- C#——实现IComparable接口、IComparableT 接口、IComparer接口、IComparerT 接口和ComparerT 类DEMO
- Reverse a Substring