1.單執行緒模式:
建立服務端:
第一步,準備位址和埠;第二步,建立乙個serversocket物件;
第三步,等待客戶端連線;最後一步,資料接收和傳送。
public class singlethreadserver catch (ioexception e) }}
public class singlethreadclient catch (ioexception e) }}
結果如下:
2.多執行緒模式:
上面的server和client只是進行了簡單的通訊操作:伺服器端接收到客戶端連線之後,伺服器端向客戶端輸出乙個字串,而客戶端也只是讀取伺服器端的字串後就退出了。
實際應用中的客戶端則可能需要和伺服器端保持長時間通訊,即伺服器端需要不斷地讀取客戶端資料,並向客戶端寫入資料;客戶端也不需要不斷地讀取伺服器端資料,並向伺服器端寫入資料。
建立服務端:
首先建立乙個與客戶端互動的任務處理;
public class clienthandler implements runnable
@override
public void run()
continue;
}if (line.startswith("groupchat:"))
continue;
}if (line.startswith("privatechat:"))
continue;
}if (line.equalsignorecase("bye"))
}} catch (ioexception e)
}private void quitchat()
private void privatechat(string name, string message)
}private void groupchat(string message)
sendmessage(socket, this.name + "說:" + message);}}
private void register(string name)
private void printonlineclient()
}//發指定訊息到客戶端
private void sendmessage(socket client, string s) catch (ioexception e) }}
建立服務端主程式。
public class multithreadserver
} catch (ioexception e) finally }}
建立客戶端:
首先建立乙個讀取服務端資訊執行緒;
public class readdatafromserverthread extends thread
@override
public void run() catch (nosuchelementexception e)
}} catch (ioexception e) }}
再建立乙個傳送資訊給服務端的執行緒;
public class writedatatoserverthread extends thread
@override
public void run()
}this.client.close();
} catch (ioexception e) }}
最後客戶端主程式。
public class multithreadclient catch (ioexception e) }}
先啟動服務端,再啟動多個客戶端。
結果如下:
網路程式設計之 使用Socket建立聊天室
使用基於tcp協議的socket建立聊天室,昨天我寫的部落格已經介紹了怎麼使用 serversocket 建立服務端,以及服務端怎麼返回資料給客戶端 昨天寫的部落格有個缺陷,就是 客戶端只能 先傳送,後讀取,對於正常情況來說應該是,客戶端讀取和傳送是互相不相干涉的兩個步驟,所以這裡就得使用到多執行緒...
python網路程式設計之TCP聊天室
socket的工作流程 伺服器端先初始化socket,然後與埠繫結 bind 對埠進行監聽 listen 呼叫accept阻塞,等待客戶端連線。客戶端初始化乙個socket,然後連線伺服器 connect 如果連線成功,這時客戶端與伺服器端的連線就建立了。客戶端傳送資料請求,伺服器端接收請求並處理請...
炫麗的Socket聊天室
今天我編寫了乙個聊天室,主要強調了介面上的渲染,實現了 的切換。下面我介紹下聊天室開發的注意事項 服務端 對於服務端而言,乙個執行良好的服務端對於網路程式設計來講至關重要,為了使我們的服務端不產生堵塞,我們採用常規的多執行緒程式設計,為每乙個客戶端開乙個執行緒,用乙個socket連線客戶端,並獲取資...