JavaSE——TCP協議網路編程(一),javase網路編程

來源:互聯網
上載者:User

JavaSE——TCP協議網路編程(一),javase網路編程

實現用戶端與服務端的串連: 

  • 使用ServerSocket建立TCP服務端

  ServerSocket :此類實現伺服器通訊端。伺服器通訊端請求通過網路傳入,基於該請求執行某些操作,然後可能向要求者返回結果。

  詳細描述見:http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html

  ServerSocket 類的構造方法:

ServerSocket()
          建立非綁定伺服器通訊端。
ServerSocket(int port)
          建立綁定到特定連接埠的伺服器通訊端。
ServerSocket(int port, int backlog)
          利用指定的 backlog 建立伺服器通訊端並將其綁定到指定的本地連接埠號碼。
ServerSocket(int port, int backlog, InetAddress bindAddr)
          使用指定的連接埠、偵聽 backlog 和要綁定到的本地 IP 位址建立伺服器。

  ServerSocket 類的常用方法

 Socket accept()
          偵聽並接受到此通訊端的串連。
 void bind(SocketAddress endpoint, int backlog)
          將 ServerSocket 綁定到特定地址(IP 位址和連接埠號碼)。
 void close()
          關閉此通訊端。
 InetAddress getInetAddress()
          返回此伺服器通訊端的本地地址。
 boolean isBound()
          返回 ServerSocket 的綁定狀態。
 boolean isClosed()
          返回 ServerSocket 的關閉狀態。

簡要代碼:

ServerSocket server = new ServerSocket( 有效連接埠號碼 );

Server client = server.accept(); // 在沒有接收到用戶端串連請求時, accept 屬於堵塞狀態,接收到後繼續                                                        //運行。

if(client!=null){

  System.out.println("有用戶端串連上來了");

}

 

  • 使用Socket建立TCP用戶端

  Socket 類:此類實現用戶端通訊端(“通訊端”).通訊端是兩台機器間通訊的端點。

  常用的構造方法:

  Socket()
          通過系統預設類型的 SocketImpl 建立未串連通訊端
  Socket(InetAddress address, int port)
          建立一個流通訊端並將其串連到指定 IP 位址的指定連接埠號碼。
  Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
          建立一個通訊端並將其串連到指定遠程地址上的指定遠程連接埠。
protected Socket(SocketImpl impl)
          使用使用者指定的 SocketImpl 建立一個未串連 Socket。
  Socket(String host, int port)
          建立一個流通訊端並將其串連到指定主機上的指定連接埠號碼。
  Socket(String host, int port, InetAddress localAddr, int localPort)
          建立一個通訊端並將其串連到指定遠程主機上的指定遠程連接埠。

 

常用的方法:

 void bind(SocketAddress bindpoint)
          將通訊端綁定到本地地址。
 void close()
          關閉此通訊端。
 void connect(SocketAddress endpoint)
          將此通訊端串連到伺服器。

 簡要代碼:

Socket client = new Socket("127.0.0.0",9999);  服務端IP地址與連接埠號碼。

  查詢電腦的ip地址和連接埠號碼:

  開啟命令提示字元,輸入:
  ipconfig/all   (windows ip configuration 視窗作業系統ip配置)查看當前IP及電腦網路設定; 顯示當前電腦ip相關所有資訊,包括ip地址、網卡(mac)地址。
  netstat -an ,查看當前所有串連連接埠; netstat(在核心中訪問網路及相關資訊的程式)顯示網路連接、路由表和網路介面資訊,可以讓使用者得知目前都有哪些網路連接正在運作。

package 網路編程;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server{    public static void main(String[] args) {        try {                        ServerSocket server = new ServerSocket(9657);            Socket client = server.accept();            if(client!=null){                System.out.println("有用戶端串連上來了");                server.close();            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
package 網路編程;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;public class Client {    public static void main(String[] args) {                                try {                    Socket client = new Socket("127.0.0.1",9657);                    client.close();                } catch (UnknownHostException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }    }}

output:有用戶端串連上來了。

此段服務端代碼存在問題,用戶端與服務端建立串連之後服務會自動關閉,不能繼續接受多個用戶端的請求。可以加上一個 while 迴圈,使服務端接受一個用戶端的請求後又回到 accept() 的接受狀態。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.