Java高級(六)Java網絡編程

Java高級(六)Java網絡編程

1.理解網絡相關概念

1.有那些大的局域網?(fq)
萬維網 因特網
內網 局域網
網絡可以傳輸資料 共享資料 交流通信

IP(Internet protocol)地址(計算機的身份證號,臨時唯一的)
交換機
網站:IP靜態的, 唯一的

IPV4
IPV6

Dos命令 :ipconfig,查看windows系統的IP地址
Linux: ifconfig,查看Linux系統的IP地址
測試網絡連通:ping(死亡之ping)

公網的端口號:80

2.我們知道可以通過Ip地址:端口號的方式訪問某個計算機上某個程序 那麼我們爲什麼平時訪問網站(程序)的時候沒有輸入ip地址
www.baidu.com 域名解析系統,通過DNS域名解析系統 映射到計算機的Ip地址,NDS 域名解析系統

com 商業網站
cn 中國的網站
org 非盈利組織
gov 政府機構
edu 教育機構
3.訪問百度的時候:
百度 域名/百度ip:端口號

運行這個百度程序的計算機就是服務器

服務器:給用戶提供服務的機器

網絡服務器: 配置需要足夠高! 就是一個高配置 專門運行企業軟件相關的計算機。

4.使用基於TCP協議的Socket(套接字)編程

TCP 三次握手

第一次

第一次握手:建立連接時,客戶端包到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。

第二次

第二次握手:服務器收到syn包,必須確認客戶的SYN,同時自己也發送一個SYN包,即SYN+ACK包,此時服務器進入SYN_RECV狀態

第三次

第三次握手:[客戶端]收到[服務器的SYN+ACK包,向[服務器發送確認包ACK,此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手。

完成三次握手,客戶端與服務器開始傳送數據

5.使用基於UDP協議的Socket編程

Java網絡編程
網絡概述:相互連接的計算機
IP地址: 計算機在網絡中地址的表示 網絡地址+主機地址32位,由4個8位二進制數組成,二進制不好記(0-1),轉化爲十進制(0-9)
網絡地址:標識計算機或網絡設備所在的網段
主機地址:標識特定主機或網絡設備 192.168.1.225 網絡地址 主機地址
A類IP地址:第一個數爲1-126 前8位 後24位
B類IP地址:第一個數爲128-191 前16位 後16位
C類IP地址:第一個數爲192-223 前24位 後8位
D類IP地址:第一個數爲224-239 用於組播通信
E類IP地址:第一個數爲240-225 用於科研
0.0.0.0 表示本機
127.0.0.1 表示本機迴環地址,通常用在本機上ping此地址來檢查TCP/IP協議安裝是否正確
255.255.255.255:表示當前子網,一般用於向當前子網廣播信息
網絡的分類:局域網 城域網 廣域網

協議:爲了在網絡中不同計算機之間進行通信而建立的規則,標準或約定的集合

網絡分層模型:

ISO參考模型 作用 TCP/IP模型(TCP傳輸控制協議IP網絡互連協議)
物理層 建立,維護,斷開物理連接 物理層 由底層網絡定義協議
數據鏈路層 建立邏輯連接,進行硬件地址尋址,差錯效驗等功能 網絡接口層
網絡層 進行邏輯地址尋址,實現不同網絡之間的路徑選擇 互聯網層 ICMP IGMP IP ARP RSRP
傳輸層 定義傳輸數據的協議端口號,流量控制和差錯恢復 傳輸層 TCP UDP
會話層 建立,管理和終止會話
表示層 數據的表示,安全,和壓縮
應用層 網絡服務和最終用戶的接口 應用層 HTTP FTP TFTP SMTP

ipconfig 查看本機的ip地址
ping 測試網絡是否通暢
網絡服務器:具有較高計算能力的計算機
1.郵件服務器:負責電子郵件收發管理的設備

2.web服務器:程序 Apache Tomcat http:\協議 開源 輕巧 免費
B/S 瀏覽器訪問,隱形升級 更注重於B/S開發
C/S QQ下載安裝客戶端 , 更新安裝包

Socket簡介(插孔插座)
什麼是Socket?(套接字)
提供給應用程序的接口
Socket分類 java.net
流式套接字(SOCK_STREAM) 【數據安全 TCP】

面向連接、可靠的數據傳輸服務

數據報式套接字(SOCK_DGRAM) 【高效,數據不安全 UDP】
無連接服務,需要(IP,端口號) 請求 (方法監聽請求)
A--------------------->---------------B

輸入流 輸出流
Socket,ServerSocket accept();監聽方法
服務器端:創建ServerSocket對象 客戶端:Socket() 發送IP地址,端口輸出流
accept()方法監聽電話 輸入流

服務器:

		while(true){      //服務器一直處於監聽狀態
		SocketServer socketserver=new SocketServer(5000); //端口號,服務器搜索客戶端的Socket對象
		Socket socket=socketserver.accept();  //接收客戶端的Socket對象
		MyThread  thread=new MyThread(socket);//使用線程的構造方法將客戶端傳過來的Socket對象返回
		thread.start();//啓動線程
		}
		
	/*線程:(用繼承Thread類的方式來寫線程)*/
public class MyThread extends Thread{
	   private  Socket  socket;//定義一個空線程
	   public  MyThread(Socket socket){//帶有參數的構造方法,參數是一個線程
       this.socket=socket;
		 }
	public void run(){ //run方法,啓動線程是,就調用了run()方法
	     輸入流
	InputStream    is=socket.getInputStream();
	BufferedReader br=new BufferedReader(new InputStreamReader(is));
	String info;
	while((info=br.readLine())!=null){
	   System.out.print(info);
	  }
	  //獲取客戶端的ip地址
	  InetAddress ia=socket.getInetAddress();
      String ip=ia.getHostAddress;
	  System.out.print(ip);
	  
	 String str="登錄成功";
	 //輸出流
	 OutputStream  os=socket.getOutputStream();
	 os.write(str.getBytes());
	 os.flush();
	 }
	} 		

客戶端:

 Socket socket=new Socket("服務器Ip地址",端口號);
	OutputStream os=socket.getOutputStream();
	os.write(str);
	socket.shutdownOutput();
	InputStream is=socket.getInputStream();
	BufferedReader br=new BufferedReader(new InputStreamReader(is));
	String info;
	while((info=br.readLine())!=null){
	   System.out.print(info);
	  }

多個客戶端與服務器進行交互
服務器:一直監聽客戶請求,
一旦聽到客戶請求,立刻創建一個線程,開啓線程
線程:(用繼承Thread類的方式來寫線程)
接收客戶的請求,並給客戶一個響應
客戶端:發送請求到服務器
接收服務器的響應

如何獲得客戶端IP地址

InetAddress ia=socket.getInetAddress();
String  ip=ia.getHostAddress();     

基於UDP協議的Socket編程

服務端與客戶端的通信 TCP UDP
是否連接 面向連接 面向非連接
傳輸可靠性 可靠 不可靠
速度

DatagramSocket
DatagramPacket
禮物 --數據(字符串)
包裹 --DatagramPacket
快遞點–DatagramSocket

寄禮物 --send()
收禮物 --receive()
獲取IP地址的方式

InetAddress ia=InetAddress.getByName("localhost");
//DatagramPacket(字符串數組,字符串數組長度,IP地址,端口)的構造方法四個參數
DatagramSocket socket=new DatagramSocket();
socket.send(/*DatagramPacket類型的參數*/);
socket.receive(/*DatagramPacket類型的參數*/);
String str=new String (/*數組,開始位置,數組長度*/);

簡述域名解析原理
在瀏覽器中輸入域名www.taobao.com,主機在向www.taobao.com發出請求之前要先知道他的IP地址。主機會調用域名解析程序,向設定的DNS服務器發送信息,請求獲得www.taobao.com的IP地址,如果本地DNS沒有儲存相應的信息,他會發送信息到跟DNS服務器獲得.comDNS服務器的IP,然後向.comDNS服務器發送查詢請求獲得taobao.comDNS服務器的IP地址,最終獲得www.taobao.com的IP地址

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