在網上參考別人的例子,改自己的程式,終於搞明白了。原來在socket的伺服器端設定執行緒並不是像之前想的那樣,建立乙個連線後就重新開乙個埠去監聽,這樣的想法遇到了很多問題,首先,當我把客戶端,弄成for迴圈遞增的鏈結個格埠的時候,發現總是異常,因為伺服器端的新的埠建立速度總是沒有客戶端的主動連線塊,然後試圖去讓客戶端建立新埠鏈結的速度降慢,但是一直沒除錯成功,並且即便是成功了。這個問題還是有隱患的,因為客戶端的鏈結速度是不可控的,有兩天,這個問題沒有進展,後來在網上查到了,原來伺服器端的執行緒,並不是用來建立新的埠的,之前也想過,乙個伺服器端不可能就連線乙個客戶端,但是沒想出來解決辦法,看了例子的提示後,才做出來,伺服器端的執行緒是用來監聽連線客戶端的,即,當監聽到客戶端的連線請求時就會主動去建立乙個socket執行緒去連線,完成客戶端和伺服器端的互動。後客戶端自動斷開鏈結。
核心**:
main 函式
serversocket serversocket=null;
boolean listening=true;
trycatch(ioexception e)
while(listening)
serversocket.close(); //關閉serversocket
設計serverthread類
public class serverthread extends thread
public void run()
Socket 多執行緒
服務端 include include pragma comment lib,ws2 32 include void sendfuction socket sockconn void recvfunction socket sockclient void main if lobyte wsadata...
Socket之心跳包實現思路
原 心跳包的實現思路 客戶端每隔一段時間,傳送乙個心跳包 var timer new system.timers.timer timer.interval 60000 1m觸發一次 timer.start timer.elapsed sender,args 服務端每隔一段時間檢測 var timer...
通過Socket實現群聊的思路
問題來自論壇 我的個人看法 啥叫群聊?也就是幾個人在乙個組裡!ok,那麼你先建乙個虛擬的組吧,然後把參 聊的人加入進去。然後每個成員發言時,傳送物件是組,伺服器負責把訊息發給組內的每個人。看看qq,裡面也是這麼做的。當然,聊天協議要設計好,至少每個訊息裡一定有傳送人,接收人 組 群,訊息等 再分享一...