2013-12-12 30 views
0

我基本實現了this asynchronous server socket example(和相應的客戶端)。使用它,我可以迴應客戶端,如果我完全按照該示例,即如果Send()響應的調用是在ReadCallback()方法。如何在C#中使用套接字異步回覆客戶端?

但是,如果我嘗試和送外這裏的響應,即在我已經連接到我的消息處理程序回調(在不同的線程中運行),我得到this錯誤,說Socket是未連接。如果我嘗試在Server代碼的其他地方發送響應,例如在偵聽傳入連接的while(true)循環中,我會得到相同的錯誤。

我在這裏錯過了什麼?

編輯:

好了,我讀Two-way communication in socket programming using C,我現在認爲,根據這個問題的答案,我要修改我聯繫的例子,讓我回復服務器上套接字由accept進程返回。 我的目標是在客戶端和服務器連接後,能夠在接收回調之外撥打Send(),例如Main()

請有人可以建議我如何修改示例以實現我想要的?我對此深感困惑,如果我不需要創建一個單獨的流(根據我發佈的問題,我不需要......)。

+0

在修改之前/之後發佈相關的代碼片段可以幫助我們更好地理解。談話很好,但通常不會精確地描述代碼。 – Jon

回答

1

如果你想保持連接打開,那麼將需要堅持handler變量,因爲這是開放套接字連接。然後,只要你想發送該連接的消息,你檢索它的套接字併發送。

此外,您顯然不會調用handler變量上的Shutdown()和Close()。

+0

先生,你是絕對的英雄。這是我幾周來最輕鬆的mod。這絕對是一個「無法看到樹林」的案例! (僅供參考,這是我失蹤的持久性)。 –