這是一個超簡單的Client Server範例,Server部份利用Thread來常駐執行,而Client利用Socket去連接指定的port,送出一個字元組給OutputStream,而Server接收到請求後,使用InputStream來取得資料。
這裡有篇介紹Socket Server的原理Thread應用-Java SocketServer,還有一篇傳送物件Serializable序列化Socket傳送範例,這篇算是比較進階。
程式碼包裝在jar裡,利用二個command視窗,一個執行Server一個執行Client,結果如下:

原始碼及jar下載:
詳細文章
Thread的應用,最好的例子就是SocketServer,
Thread簡介可以參考Java Thread簡介
Apache Tomcat用最簡單的方式看,它也是個SocketServer,服務http要求及回覆,
底下有一個簡單的例子,可以建立一個SocketServer,等待Connection的連入
概念是建立一個port Waiting,有人連入後,則再回到Waiting
順便說明implement java.lang.Runnable的用法
public class SocketServer implements java.lang.Runnable { private int port; private java.net.ServerSocket ss; public SocketServer(int port) throws java.io.IOException { this.port = port; // 建立一個ServerSocket this.ss = new java.net.ServerSocket(port); } public void run() { java.net.Socket sk = null; while (true)// 永遠執行 { // 等待連入 System.out.println("waiting..."); try { // 取得連線Socket sk = this.ss.accept(); // 取得Client連線Address System.out.println(sk.getLocalAddress()); sk.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } } public static void main(String args[]) throws java.io.IOException { // runable要new一個Thread,再把runnable置入 java.lang.Thread thread = new java.lang.Thread(new SocketServer(81)); thread.start(); } } |
可利利用Browser來測試結果,
在網址列打入http://localhost:81 http://ServerIP:port
可以看到Server程式回應如下:
waiting...
0.0.0.0/0.0.0.0
waiting...
取得連線Socket後馬上又accept等待了。