1. 程式人生 > >JAVA網絡編程TCP通信

JAVA網絡編程TCP通信

常用方法 print user except tcp協議 adl cnblogs 可靠 spa

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() 關閉套接字,同時也代表關閉了獲取的輸入與輸出流。

TCP與UDP的區別

TCP(Transmission Control Protocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。聊天工具使用TCP協議

UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去! 遊戲多使用UDP協議

JAVA網絡編程TCP通信