Java網絡編程基礎002—端口

    既然IP用來標識計算機,那麼什麼來標識計算機上的網絡應用程序? 答案是端口。端口是一個虛擬的概念,是16位二進制正整數,故取值爲0-65535(十進制)。端口一共可以在一臺計算機上存在12w+(2^17)個,因爲端口屬於傳輸層傳輸層有兩個重要協議(TCP和UDP),所以兩邊各65536個(2^16)。一般來說端口夠用,因爲計算機上用不到12w多個網絡應用。

    端口0-1023爲知名端口,也叫公認端口,比如20,21(ftp), 22(SSH), 80端口(http), 443(https) ,自己開發的應用程序一般不用

    端口1023-49151爲註冊端口, 比如3306(MySQL),8080(Tomcat)

    端口49152-65535爲動態端口或者私有端口

     Windows查看所有使用的端口: cmd下

netstat -ano

     Linux下查看所有使用udp和tcp的端口: shell下

netstat -ntulp

     解決端口衝突(win10下mysql爲例)

1. 通過第一條命令找到對應進程號

2.第二條命令通過進程號找到對應進程名(可選)

3.任務管理器詳細消息裏結束任務

更多的參數請查詢相關手冊。

JavaDemo:

import java.net.InetSocketAddress;
import java.net.UnknownHostException;

public class Main {
	public static void main(String[] args) throws UnknownHostException {
		// Socket: 插座, 插口, 套接字
		 InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 3306);
		 // local host定義查看hosts文件 C盤Windows/System32/drivers/etc 顯示所有文件
		 InetSocketAddress socketAddress2 = new InetSocketAddress("localhost", 3306);
		 System.out.println(socketAddress.getHostName());
		 System.out.println(socketAddress2.getAddress());
		 // 端口
		 System.out.println(socketAddress.getPort());
	}
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章