基於之前講述的簡單循環服務器,做一個多個線程各自accept的服務器demo
由於多個線程各自accept,容易造成數據錯誤,需要在accept前后枷鎖
先看下客戶端
客戶端創建socket,初始化服務器地址信息,然后進行連接

連接成功后發送信息給服務器,並且接受服務器回傳的信息

服務器部分:
服務器靜態的的初始化一個線程鎖,然后去寫一個處理連接請求的函數,在循環里
accept客戶端的連接,接受客戶端的消息,並且發送給客戶端事件,
由於多個線程各自accept,所以要在accept處加鎖,避免產生的socket有誤

處理連接,這個主要是服務器創建了幾個線程,各自線程的回調函數是handle_request,參數是socket
pthread_join是等待線程安全退出后進程結束

服務器的main函數

這是個阻塞模式下的多線程accept,實際生產和項目中都采用非阻塞模型,只是用來理解socket通信
原理,並無太大用處。
源代碼下載地址: http://download.csdn.net/detail/secondtonone1/9510570
關注我的二維碼,謝謝。

