Socket簡介: Socket稱為“套接字”,描述IP地址和埠。在Internet上的主機一般運行多個服務軟體,同時提供幾種服務,每種服務都打開一個Socket,並綁定在一個埠上,不同的埠對應於不同的服務。Socket和ServerSocket類位於java.net包中。ServerSock ...
Socket簡介:
Socket稱為“套接字”,描述IP地址和埠。在Internet上的主機一般運行多個服務軟體,同時提供幾種服務,每種服務都打開一個Socket,並綁定在一個埠上,不同的埠對應於不同的服務。Socket和ServerSocket類位於java.net包中。ServerSocket用於服務端,Socket是建立網路連接時使用的。連接成功時,應用程式兩端都會產生一個Socket實例,通過操作這個實例完成所需會話。
Socket常用方法:
-int getLocalPort() 獲取本地使用的埠號
-InetAddress getLocalAddress() 獲取套接字綁定的本地地址
-int getPort() 獲取遠端使用的埠號
-InetAddress.getInetAddress() 獲取套接字綁定的遠端地址
InetAddress常用方法:
-String getCanonicalHostName() 獲取此IP地址的完全限定功能變數名稱。
-String getHostAddress() 返回IP地址字元串
1 //獲取本地地址和埠號: 2 public void testSocket() throws Exception{ 3 Socket socket=new Socket("localhost",8088); 4 InetAddress add=socket.getLocalAddress(); 5 System.out.println(add.getCanonicalHostName()); 6 System.out.println(add.getHostName()); 7 System.out.println(add.getLocalPort()); 8 }
1 //獲取遠端地址和埠號: 2 public static void testSocket() throws Exception{ 3 Socket socket=new Socket("localhost",8088); 4 InetAddress inetAdd=socket.getInetAddress(); 5 System.out.println(inetAdd.getCanonicalHostName()); 6 System.out.println(inetAdd.getHostName()); 7 System.out.println(socket.getLocalPort()); 8 }
獲取網路輸入流和網路輸出流
通過Socket獲取輸入流與輸出流,主要使用一下兩個方法
-InputStream getInputStream() 用於返回此套接字的輸入流
-OutStream getOutputStream() 用於返回此套接字的輸出流
public static void testSocket() throws Exception { Socket socket = new Socket("localhost", 8088); OutputStream out = socket.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8"); PrintWriter pw = new PrintWriter(osw, true); pw.println("輸出的內容");//發送內容 InputStream in=socket.getInputStream(); InputStreamReader isr=new InputStreamReader(in, "UTF-8"); BufferedReader br=new BufferedReader(isr); br.readLine();//讀取接到的內容 }
註意:當使用完Socket進行通訊完畢後,要關閉Socket以釋放系統資源
-void close() 關閉套接字,同時也代表關閉了獲取的輸入與輸出流。
服務端ServerSocket監聽
1 //創建ServerSocket並申請服務埠8088 2 ServerSocket server=new ServerSocket(8088); 3 /*方法會產生阻塞,直到某個Socket連接,並返回請求連接的Socket*/ 4 Socket socket=server.accept(); 5 ...
客戶端Socket連接
1 //參數1:服務端的IP地址,參數2:服務端的伺服器埠 2 //註意:創建Socket的同時就會發起連接,若連接失敗會拋出異常 3 Socket socket=new Socket("localhost",8088); 4 ....
C-S端通信模型
TCP與UDP的區別
TCP(Transmission Control Protocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。聊天工具使用TCP協議
UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去! 游戲多使用UDP協議