我想寫一個可以在一個線程中處理多個客戶端的tcp服務器。我真的想堅持一個線程,即使沒有隱藏的C#異步線程,所以我想使用Socket.Select
而不是使用異步接收/發送方法。C#Socket.Select and writes
在閱讀Select
的文檔時,我想知道select如何告訴我它可以發送多少個字節而沒有阻塞。它的文檔說明如下:
如果您已經建立了連接,則可寫性意味着所有發送操作都會成功而不會阻塞。
所以根據文檔,似乎我可以發出一個巨大的發送操作,它會成功沒有阻塞。但是,如果我發送100兆字節的發送操作,這是如何工作的。當然,套接字的寫入緩衝區不能包含那麼多的數據,所以套接字必須阻塞或只寫入一小部分數據。這個套接字在這裏做什麼?
'我確實想堅持一個線程,甚至沒有隱藏的C#異步線程** ** []沒有線程(http:// blog。 stephencleary.com/2013/11/there-is-no-thread.html) – Eser
@Eser:然後簡單地忘記我的動機段落,但我仍然對這個問題的答案感興趣。 – gexicide