簡體   English   中英

為Windows編寫非阻塞stdin讀取函數?

[英]Writing a non-blocking stdin read function for Windows?

我正在編寫一個執行服務器 - 客戶端關系的Windows程序。

我正在使用select()以便從stdin獲取客戶端的請求,以及用戶的命令(服務器后面的命令)。

似乎select()適用於客戶端的請求,但不適用於來自stdin的輸入。

另外,我沒有從stdin成功ReadFile() ,因為后者沒有被監視,換句話說它不是FD_SET(stdin, (fd_set)myread_fds) 有沒有辦法以非阻塞方式從stdin獲取輸入?

我認為你所尋找的不是select()而是WaitForMultipleObjects(),它可以等待套接字和控制台I / O.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx

您的服務器設計計划非常具有挑戰性。 許多優秀的程序員已經嘗試過並最終放棄了。 即使你可以使它工作,它也不會是可擴展的。

一個更好的計划,恕我直言,是編寫一個單獨的應用程序,它負責“服務器用戶”命令。 這個應用程序,稱之為SUG(服務器用戶gui)是服務器的另一個客戶端。 服務器以相同的方式處理來自SUG和遠程客戶端的兩個請求。 這使得服務器設計更簡單,並且GUI不會干擾服務器的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM