網絡編程有三個要素,分別是IP地址、端口號和通信協議,那本文主要講述的是TCP與UDP這兩種通信協議,以及編程的實現。
首先,我們需要了解一下IP地址、端口號、通信協議的相關知識。
一、IP地址
網絡中的計算機使用IP地址來進行唯一標識,IP地址有IPv4和IPv6兩種類型。IPv4采用十進制或二進制表示形式,十進制是一種比較常用的表示形式,如192.168.1.131,IPv6采用十六進制表示形式,一般不常用。
如何查看IP地址相關信息:
在Windows系統下,打開cmd,輸入命令ipconfig,按回車即可查看。在Linux或Mac系統下,打開終端,使用ifconfig命令,按回車即可查看。
二、端口號
端口號是計算機中的應用程序的一個整數數字標號,用來區分不同的應用程序。
0 ~ 1024 未被系統使用或保留的端口號,0 ~ 65535為有效的端口號,也就是說我們要對一些程序定義端口號的時候,要選擇1024 ~ 65535范圍內的整數數字。
比如,以前學過的MySQL的端口號是3306,SQLServer的端口號是1433,查了一下Oracle的端口號是1521。
一定要把這些數據庫對應的端口號,藏在深深的腦海里,以后在連接數據庫的時候,會使用到端口號。
三、通信協議
說得通俗一點,通信協議就是網絡通信中的規則,分為TCP協議和UDP協議兩種。
第一種:TCP協議
英文名:Transmission Control Protocol 中文名:傳輸控制協議 協議說明:TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。
舉例:打電話,需要雙方都接通,才能進行對話
特點:效率低,數據傳輸比較安全
第二種:UDP協議
英文名:User Datagram Protocol 中文名:數據報協議 協議說明:UDP是一種面向無連接的傳輸層通信協議。
舉例:發短信,不需要雙方建立連接,But,數據報的大小應限制在64k以內
特點:效率高,數據傳輸不安全,容易丟包
四、三要素關系圖與網絡模型圖
1、網絡編程三要素關系圖
注:圖中端口號、IP地址為演示,并非真實
2、OSI參考模型與TCP/IP參考模型
五、TCP編程
TCP是基于字節流的傳輸層通信協議,所以TCP編程是基于IO流編程。
對于客戶端,我們需要使用Socket類來創建對象。對于服務器端,我們需要使用ServerSocket來創建對象,通過對象調用accept()方法來進行監聽是否有客戶端訪問。
客戶端與服務器端圖解:
客戶端與服務器端實現步驟:
前提:創建一個項目,在項目中創建兩個模塊(model),一個模塊用來放客戶端相關代碼,一個模塊用來放服務器端相關代碼。
目錄結構如下圖
客戶端 :
1、創建Socket對象,并指定服務器端應用程序的端口號和服務器端主機的IP地址。
2、使用Socket的對象調用getOutputStream()方法來獲取字節輸出流對象。
3、調用字節輸出流的write(byte[] buf)或者write(int b)向服務器發送指定數據。
4、記得關閉流。
服務器端 :
1、創建ServerSocket對象,并指定該應用程序的端口號,端口號必須和客戶端指定的端口號一樣。
2、使用ServerSocket對象的accept()方法來監聽客戶端發送過來的請求,返回值為Socket對象。
3、調用Socket對象的getInputStream()方法獲取字節輸入流對象
4、調用字節輸入流對象的read(byte[] buf)或read()方法獲取數據。
5、記得關閉流。
實例 :
客戶端向服務器端發送信息,并顯示在服務器端。
Client類(客戶端)
package cn.tkrnet.client;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
//創建Socket對象,指定要發送到服務器端的IP地址,以及服務器端應用程序接收的端口號
//localhost代表本機IP地址
Socket client = new Socket("localhost",9000);
//獲取輸出流,用于向服務器端發送數據
OutputStream os = client.getOutputStream();
os.write("Java is my friend !".getBytes());
System.out.println("信息已發送");
//關閉流
os.close();
client.close();
}
}
s
-
通信協議
+關注
關注
28文章
996瀏覽量
40937 -
TCP
+關注
關注
8文章
1397瀏覽量
80359 -
UDP
+關注
關注
0文章
330瀏覽量
34473 -
ip地址
+關注
關注
0文章
305瀏覽量
17439 -
網絡編程
+關注
關注
0文章
72瀏覽量
10534
發布評論請先 登錄
TCP協議和UDP協議對比 UDP協議的原理及應用

評論