Re: [問題] winsocket程設: 如何停止server?
※ 引述《rokuman (ロックマン)》之銘言:
: 小弟我練習寫了一個簡單的echo server,在while(1)裡面產生thread處理client的
: request,卻不知道要用那種狀態判斷跳出迴圈,現在都只能按ctrl+c強迫程式結束...
下面貼上一段改良過後的虛擬碼,參數都省略
//關閉server
int shutdown1(){
running = FALSE;
//closesocket(serverSocket); //關掉serverSocket可以讓accept跳出來
//WSACleanup();
}
//接受連線
int listening(){
while(running){
accept(); //程式會停在這直到有client連線
newThread();
}
finalize();
}
現在碰到的問題是程式本來就會在accept時停住,除非我把shutdown1()的第二三行註解
取消,accpet的命令才會在我下shutdown1()時被強制中斷再跑回while()去檢查旗標,
反之不取消註解的話,在執行shutdown1()後還要有一個client來連線才能跳出while
一般的server設計shutdown這種命令時也是用類似的方式實作嗎?
還是有什麼檢查socket狀態之類的寫法?
--
先感謝您的回答...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.122.180
推
08/29 01:31, , 1F
08/29 01:31, 1F
→
08/29 02:06, , 2F
08/29 02:06, 2F
→
08/29 02:07, , 3F
08/29 02:07, 3F
→
08/29 02:08, , 4F
08/29 02:08, 4F
推
08/29 12:33, , 5F
08/29 12:33, 5F
→
08/29 12:33, , 6F
08/29 12:33, 6F
→
08/29 12:34, , 7F
08/29 12:34, 7F
→
08/29 13:36, , 8F
08/29 13:36, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):