2009-12-28 152 views
0

我正在處理將文件發送到其他設備的示例應用程序。我的窗口上有兩個按鈕,一個是發送,另一個是停止文件傳輸。發送;將文件發送到目的地並停止:停止發送過程。Tcp Socket + send()錯誤#10054

當我將多個文件發送到目的地時,所有文件都能正確地到達目的地。但是,如果我點擊發送並重復停止3到4次(即最初我點擊發送,然後突然沒有時間,我點擊停止,我會繼續這個過程3至4次)。 然後,如果我嘗試發送多個文件,那麼它將發送第一個文件,當它發送2文件時,我在函數Send()中收到錯誤#10054。

我使用非阻塞套接字通過: u_long i = 1; ioctlsocket(sockt,FIONBIO,& i);

在destructer我正在關閉scoket。

請幫他解決這個問題。

+2

10054 =連接重置由同級。意思是對方已關閉連接 – 2009-12-28 10:53:24

+0

有什麼辦法可以避免這種情況發生?只有當我嘗試發送和重複停止3到4次時纔會發生這種情況。 – 2009-12-28 11:12:16

+0

如果您可以發佈您的代碼或可以提供一些信息,會更好。你是否爲每個文件傳輸創建新的連接?另外,服務器呢?這是標準的還是由你寫的? – Jay 2010-01-30 17:04:34

回答

1

首先,在我看來,問題是在對端。 它可能無法正確管理連接。例如,當時可能有多個連接(多於一個活動套接字,例如一個停止並剛創建一個新套接字),另一方程序沒有意識到這一點。

+0

感謝您的重播, 我讀到closesocket()在調用關閉套接字後沒有立即關閉套接字。它只是啓動關閉操作。如何克服這個問題。 – 2009-12-28 11:36:37

+0

這不是問題。這個是正常的。正是出於這個原因,你的服務器應該支持多個連接。 – 2009-12-28 11:46:28

+0

用遠程設備重新建立連接(再次創建套接字並連接)是否正確?如果我這樣做,會出現什麼問題? – 2009-12-30 08:30:10