一個 HelloWord 級別的 Java Socket 通信的例子。通訊過程:
先啓動 Server 端,進入一個死循環以便一直監聽某端口是否有連接請求。然後運行 Client
端,客戶端發出連接請求,服務端監聽到這次請求後向客戶端發回接受消息,連接建立,啓動一個線程去處理這次請求,然後繼續死循環監聽其他請求。客戶端輸入字符串後按回車鍵,向服務器發送數據。服務器讀取數據後回覆客戶端數據。這次請求處理完畢,啓動的線程消亡。如果客戶端接收到
"OK"
之外的返回數據,會再次發送連接請求併發送數據,服務器會爲這次連接再次啓動一個線程來進行響應。。。直到當客戶端接收到的返回數據爲
"OK" 時,客戶端退出。
服務端源代碼:
package com.defonds.socket.begin;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public
static final int PORT =
12345;//監聽的端口號
public
static void main(String[] args)
{
System.out.println("服務器啓動...\n");
Server server = new
Server();
server.init();
}
public void
init()
{
try {
ServerSocket serverSocket = new
ServerSocket(PORT);
while (true)
{
// 一旦有堵塞,
則表示服務器與客戶端獲得了連接
Socket client =
serverSocket.accept();
//
處理這次連接
new
HandlerThread(client);
}
} catch (Exception e)
{
System.out.println("服務器異常: " +
e.getMessage());
}
}
private
class HandlerThread implements Runnable
{