java實現最基礎的socket網路通訊

來源:互聯網
上載者:User

標籤:

一、網路通訊基礎

網路中存在很多的通訊實體,每一個通訊實體都有一個標識符就是IP地址。

而現實中每一個網路實體可以和多個通訊程式同時進行網路通訊,這就需要使用連接埠號碼進行區分。

二、java中的基本網路支援

1、IP地址使用InetAddress類來表示。

     擷取InetAddress執行個體的兩個方法為:

    (1)getByName(String host)    根據主機擷取對應的InetAddress對象

    (2)getByAddress(byte[] addr)根據IP地址擷取InetAddress對象

2、InetAddress提供了三個方法來擷取InetAddress執行個體對應的IP地址和主機名稱

    (1)String getCanonicalHostName()擷取此IP地址的許可權定網域名稱

    (2)String getHostAddress()擷取InetAddress執行個體對應的IP地址

    (3)String getHostName()擷取此IP地址的主機名稱

此外InetAddress類使用getLocalHost()方法擷取本機IP地址對應的InetAddress執行個體,使用isReachable()方法測試是否可以到達該地址。

三、java實現簡單的TCP/IP通訊

伺服器端使用ServerSocket建立TCP伺服器,使用accept()進行監聽,如果接收到用戶端請求則返回一個與用戶端對應的Socket,否則處於等待狀態。

用戶端根據伺服器的IP,串連伺服器。

伺服器代碼:

import java.net.*;import java.io.*;/**手機端代碼手機端作為伺服器,擷取自己的ip地址,並顯示以供用戶端串連*/public class phone_Server{    public static void main(String[] args)        throws IOException    {        //列印原生IP地址        InetAddress address=InetAddress.getLocalHost();        System.out.println("原生IP地址是"+address.getHostAddress());        // 建立一個ServerSocket,用於監聽用戶端Socket的串連請求        ServerSocket ss = new ServerSocket(30000);        // 採用迴圈不斷接受來自用戶端的請求        while (true)        {            // 每當接受到用戶端Socket的請求,伺服器端也對應產生一個Socket            Socket s = ss.accept();            // 將Socket對應的輸出資料流封裝成PrintStream            PrintStream ps = new PrintStream(s.getOutputStream());            // 進行普通IO操作            ps.println("您好,您收到了伺服器的新年祝福!");            // 關閉輸出資料流,關閉Socket            ps.close();            s.close();        }    }}

用戶端代碼:

/**PC端代碼PC作為用戶端,根據伺服器的IP地址和連接埠號碼串連伺服器*/import java.net.*;import java.io.*;public class PC_Client{    public static void main(String[] args)        throws IOException    {        //Socket socket = new Socket("127.0.0.1" , 30000);        Socket socket = new Socket("192.168.47.1" , 30000);//這裡的IP地址填寫手機端伺服器的IP地址        // 將Socket對應的輸入資料流封裝成BufferedReader        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));        // 進行普通IO操作        String line = br.readLine();        System.out.println("來自伺服器的資料:" + line);        // 關閉輸入資料流、socket        br.close();        socket.close();    }}

 

java實現最基礎的socket網路通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.