2011-09-13 56 views
3

我的應用程序將文件上傳到我的客戶端的服務器,但他想要特殊的「暫停上傳」功能。我不能簡單地關閉連接,甚至沒有殺死進程 - 他需要失去連接,否則他的服務器應用程序刪除未完成的文件 - 所以我必須在代碼中模擬「拔下電纜」 - 你有什麼建議嗎? 感謝您的幫助,我的英語水平:) 爾卡對不起如何模擬套接字斷開?

+0

你必須停止發送數據並停止發送到達數據的確認(我認爲這對於Java的套接字實現是不可能的,因爲這是由OS完成的),然後等待足夠長的時間,以便服務器端的一些超時觸發。 –

+3

使用防火牆設置(iptables或windows防火牆),或者拔掉電纜,關閉無線路由器或發送RST信號。你可以很容易地在Windows上使用TCPView。 – bestsss

+0

@PaŭloEbermann,由於超時時間足夠長(如2小時)和/或啓用KEEP_ALIVE,所以無法工作。 – bestsss

回答

0

如果你寫的客戶端和服務器,或許更好的選擇是發送一些OOB data告訴服務器你正在暫停(或者一條消息告訴服務器不要在下一個套接字關閉時刪除該文件)。通常情況下最好是明確的,而不是依靠某些行爲的副作用 - 在你的情況下,關閉套接字而沒有明確的connection termination