1.惟一的ip地址java
2.協議服務器
3.端口號網絡
爲實現網絡中不用計算機之間的通訊,每臺計算機都必須有一個惟一的一個標識---IP地址多線程
IP地址格式:數字型,如:192.168.0.1(32位的二進制)socket
IPV4:是互聯網協議(Internet Protocol,IP)的第四版,也是第一個被普遍使用,構成現今互聯網技術的基礎的協議。1981年 Jon Postel 在RFC791中定義了IP,Ipv4能夠運行在各類各樣的底層網絡上,好比端對端的串行數據鏈路(PPP協議和SLIP協議) ,衛星鏈路等等。局域網中最經常使用的是以太網。this
TCP/IP是目前世界上應用最爲普遍的協議.net
是以TCP和IP爲基礎的不一樣層析上多個協議的集合線程
也稱爲;TCP/IP協議族或TCP/IP協議棧code
TCP:TransmissionControl Protocol 傳輸控制協議orm
IP:Internet Protocol 互聯網協議
1.用於區分不一樣應用程序
2.端口號範圍爲0-65535,其中0-1023爲系統所保留
3.IP地址和端口號組成了所謂的Socket,Socket是網絡上運行的程序之間雙向通訊鏈路的終結點,是TCP和UDP的基礎
InetAddress類
1.InetAddress類用於標示網絡上的硬件資源,表示互聯網協議(IP)地址 獲取本機的InetAddress實例
InetAddress address=InetAddress.getLocalHost();
System.out.println("計算機名:"+address.getHostName());
InerAddress實例獲取:
一、經過主機名和ip地址來獲取 。 InetAddress.getByName("機器名"); InetAddress.getByAddress(ip地址); 二、也可經過getLocalHost()方法來獲取實例。
1.URL(Uniform Resource Locator)統一資源定位符,表示Internet上某一資源的地址
2.URL由兩部分組成:協議名稱和資源名稱,中間用冒號隔開
3.在java.net包中,提供了URL類來表示URL
錨點:是指同一頁面中的不一樣位置連接。例如,一個很長的頁面,在頁面的最下方有一個「返回頁首」的文字,單擊連接後,能夠跳轉到這個頁面最頂端,這就是一種最典型的錨點連接。經過點擊命名錨點,可以快速重定向網頁特定的位置(好比快速到頁首、頁尾或者網頁中某篇文章處),便於瀏覽者查看網頁內容。相似於咱們閱讀書籍時的目錄頁碼或章回提示。
1.經過URL對象的openStream()方法能夠獲得指定資源的輸入流
2.經過輸入流能夠讀取、訪問網絡上的數據
Socket通訊 1.TCP協議是面向對象鏈接、可靠的、有序的,以字節流的方式發送數據
2.基於TCP協議實現網絡通訊的類
客戶端的Socket類
Socket通訊實現步驟
1.建立ServerSocket和Socket
2.打開鏈接到Socket的輸入/輸出流
3.按照協議對Socket進行讀/寫操做
4.關閉輸入輸出流、關閉Socket
客戶端步驟:
1.建立客戶端Socket,指定服務器地址和端口 Socket socket=new Socket("IP地址","端口號"); 2.獲取輸出流,向服務器發送信息 OutputStream os=socket.getOutputStream();//字節輸出流 PrintWriter pw=new PrintWriter(os);//將輸出流包裝爲打印流 pw.write("用戶名:admin;密碼:123"); pw.flush(); socket.shutdownOutput();//關閉輸出流 //關閉相應的資源 pw.close(); os.close(); socket.close();
基本步驟 1.服務器端建立ServerSocket,循環調用accept()等待客戶端鏈接 2.客戶端建立一個socket並請求和服務器端鏈接 3.服務器端接收客戶端請求,建立socket與該客戶創建專線鏈接 4.創建鏈接的兩個socket在一個單獨的線程上對話 5.服務器端繼續等待新的鏈接
服務器線程處理類
public class ServerThread extends Thread { //和本線程相關的socket Socket socket=null; public ServerThread(Socket socket) { this.socket=socket; } //線程執行的操做,響應客戶端的請求 public void run() { //獲取輸入流,並讀取客戶端信息 //獲取輸出流,反饋信息給客戶端 } }
服務器的修改
Socket socket=null; //記錄客戶端的數量 int count=0; //循環監聽等待 while(true) { //調用accept()方法開始監聽,等待客戶端的鏈接 socket=serverSocket.accept(); //建立一個新的線程 ServerThread serverThread=new ServerThread(socket); //啓動線程 serverThread.start(); count++; System.out.println(count); //獲取當前客戶端的IP InetAddress address=socket.getInetAddress(); System.out.println("當前客戶端的IP:"+address.getHostAddress()); }