標籤:
1. Socket介紹
2. ServerSocket的建立與使用
3. 使用ServerSocket建立聊天伺服器-1
4. 使用ServerSocket建立聊天伺服器-2
5. 在Android中建立Socket用戶端
------------------------------------------------------------------
1. Socket介紹
Socket 又稱"通訊端",應用程式通常通過"通訊端"向網路發出請求或者應答網路請求。ServerSocket 用於伺服器端,Socket 是建立網路連接時使用的。在串連成功時,應用程式兩端都會產生一個 Socket 執行個體,操作這個執行個體,完成所需的會話。
對於一個網路連接來說,通訊端是平等的,沒有差別, 不會應用在伺服器端或者用戶端而產生不同層級。
不管是Socket還是ServerSocket 他們的工作都是通過Socket類及其子類完成。
* 基於TCP串連,資料轉送有保障
* 適於建立長時間的串連
* 通常用於即時通訊
2. ServerSocket的建立與使用
3. 使用ServerSocket建立聊天伺服器-1
3.1 建立Java工程: ServerSocketDemo
* ChatSocket.java
public class ChatSocket extends Thread { Socket socket; public ChatSocket(Socket s) { socket = s; } public void out(String out) { try { socket.getOutputStream().write(out.getBytes("UTF-8")); } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { int count = 0; while (true) { count++; out("loop : " + count + ", \t"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }}
* ServerListener.java
public class ServerListener extends Thread { @Override public void run() { ServerSocket serverSocket; try { serverSocket = new ServerSocket(12345); while (true) { // 監聽 12345連接埠 Socket socket = serverSocket.accept(); // 建立串連 JOptionPane.showMessageDialog(null, "There is an client access 12345 port"); new ChatSocket(socket).start(); } } catch (IOException e) { e.printStackTrace(); } }}
* MyServerSocket.java
public class MyServerSocket { public static void main(String[] args) { new ServerListener().start(); }}
3.2 管理員權限開啟 CMD視窗: telnet localhost 12345
兩個線程互補影響
4. 使用ServerSocket建立聊天伺服器-2
3中的兩個Client不能相互連信
5. 在Android中建立Socket用戶端
在Android中建立Socket用戶端。使用Socket建立用戶端連結,並且在AsyncTask中執行網路讀寫的任務,將使用者輸入的內容發送到伺服器,並接收伺服器發來的資料,顯示到介面上。開啟多個虛擬機器類比多人聊天效果。
建立 Android項目:
Android中基於Socket的網路通訊