1
當使用TcpClient時,我怎麼知道服務器有或沒有收到?例如,假設我的消息是一個很長的字符串:TcpClient - 如何確定何時傳送字節?
string myAppMessage = "was up too late coding, bla, bla, bla, ....."
byte[] allBytes = Encoding.ASCII.GetBytes(myAppMessage);
我想把手上斷了弦,在整體,以TCP,我想知道這整個字符串被送到和接收服務器。
似乎有通過TCP發送數據的一些常用方法:
var client = new TcpClient(IP_ADDR , PORT)
client.GetStream().Write(allBytes)
- 或 -
client.Client.Send(allBytes)
是否一方或雙方保證整個消息的傳遞?在第一種情況下,只有在我撥打電話號碼Flush()
後才能保證?我認爲上述一個或兩個都阻止了呼叫。如果在沒有拋出異常的情況下完成,我能否認爲這意味着整個郵件已發送/接收?
嗨usr - 我不知道如何實施這些建議。你有可以分享的代碼樣本嗎?請注意,除了使用標準TCP之外,我對遠程端沒有影響。 – SFun28 2014-10-08 17:06:29
參見(3)。只有這樣,您才能確保在沒有來自遠程方的合作的情況下收到數據。實際上,您的機器可以等待來自遠程端的確認而不關閉,但是此功能不會被我知道的任何API公開。 – usr 2014-10-08 17:12:30
usr - 你能說更多關於#3嗎?當TCP將字節傳輸到遠程方時,TCP是否收到ACK?似乎極端必須結束連接才能確認之前發送的所有內容都已收到? – SFun28 2014-10-08 21:28:54