實現客戶端與服務端的連接:
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)
ServerSocket(int port, int backlog, InetAddress bindAddr)
ServerSocket 類的常用方法
Socket
accept()
void
bind(SocketAddress endpoint, int backlog)
ServerSocket
綁定到特定地址(IP 地址和端口號)。
void
close()
InetAddress
getInetAddress()
boolean
isBound()
boolean
isClosed()
簡要代碼:
ServerSocket server = new ServerSocket( 有效端口號 );
Server client = server.accept(); // 在沒有接收到客戶端連接請求時, accept 屬於堵塞狀態,接收到後繼續 //運行。
if(client!=null){
System.out.println("有客戶端連接上來了");
}
Socket 類:此類實現客戶端套接字(“套接字”).套接字是兩台機器間通信的端點。
常用的構造方法:
Socket()
Socket(InetAddress address, int port)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
protected
Socket(SocketImpl impl)
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() 的接受狀態。