JavaAPI 入口:http://www.matools.com/api/java8
端口
Ip地址用來標識一臺計算機,但是一臺計算機上可能提供多種網絡應用程序,而端口(Port)就是用來區分計算機上的應用程序。
軟件意義上的端口是虛擬的概念,並不是指物理意義上的計算機有若干個端口(千瘡百孔那種)。通過端口,可以在一個主機上運行多個網絡應用程序,端口的表示是一個16位的二進制整數,2個字節,對應十進制的0到65535。按端口號可分爲三類:
- 公認端口(Well Known Ports):0-1023
- 註冊端口(Registered Ports):1024-49151
- 動態/私有端口(Dynamic / Private Ports):49152-65535
自定義的端口號儘可能大,還有一些特定的端口號:
- 常用的保留TCP端口號:HTTP 80,FTP 20/21,DNS 53,Telnet 23等
- 常用的保留UDP端口號:DNS 53,BootP 67(server)/68(client),TFTP 69等
- tomcat端口:8080
- Oracle端口:1521
- MySQL端口:3306
使用命令行查看端口情況:
查看所有端口:netstat -ano
查看指定端口:netstat -aon | findstr "5355"
查看指定進程:tasklist | findstr "2676"
打開cmd,輸入查看所有端口命令
查看端口具體情況和對應的應用程序
InetSocketAddress
InetSocketAddress是java封裝端口的類。它的構造方法:
- new InetSocketAddress(地址,端口)
- new InetSocketAddress(域名,端口)
常用的方法:
測試例子
import java.net.InetSocketAddress;
public class PortTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 根據地址+端口號構造端口類
InetSocketAddress socketAdd1 = new InetSocketAddress("127.0.0.1", 8080);
// 根據域名+端口號構造端口類
InetSocketAddress socketAdd2 = new InetSocketAddress("localhost", 8080);
System.out.println("返回域名:"+socketAdd1.getHostName());
System.out.println("返回地址:"+socketAdd1.getAddress());
System.out.println("返回端口號:"+socketAdd2.getPort());
}
}
結果: