我有一個簡單的TCP客戶端和偵聽器代碼。我想傳遞文件名以及文件數據。有沒有什麼辦法可以將文件名與文件數據一起發送,並單獨從網絡流中讀取文件名而不會破壞文件數據?從網絡流讀取數據
Q
從網絡流讀取數據
0
A
回答
0
這是發送不應該損壞的文件名和數據的一種方式。如果使用序列化,則不必分別手動編寫和讀取文件名和內容,只需將其發送並將其作爲單個對象讀取,然後讓框架處理序列化和反序列化各個屬性。
[SerializableAttribute]
class Data
{
public string FileName;
public byte[] FileData;
}
客戶
string filePath = @"c:\temp\myfile.txt";
TcpClient client = new TcpClient();
client.Connect("localhost", 8888);
Data data = new Data();
data.FileName = Path.GetFileName(filePath);
data.FileData = File.ReadAllBytes(filePath);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(client.GetStream(), data);
client.Close();
服務器
TcpListener listener = new TcpListener(IPAddress.Loopback, 8888);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
BinaryFormatter formatter = new BinaryFormatter();
Data data = (Data)formatter.Deserialize(client.GetStream());
+0
這工作Weyland。非常感謝 – user2160880
+0
當我嘗試在轉移一些200 MB後在不同域之間傳輸時,我得到「現有連接被強制關閉」。防火牆全部禁用。我正在關閉所有的文件流,套接字等 – user2160880
相關問題
- 1. 從套接字讀取網絡流
- 2. 從TCP偵聽器中的網絡流中讀取數據
- 3. 從網絡流中讀取數據包碎片
- 4. 從網絡流中讀取而不丟失數據
- 5. 讀取網絡流量
- 6. 如何等待網絡數據流讀取數據?
- 7. 從網絡流中讀取具有大量數據包的異步數據
- 8. 網絡流量 - 讀取數量每個讀取
- 9. 如何讀取Java中的網絡流數據(協議包)
- 10. C#網絡流在讀取之後仍然包含舊數據
- 11. 所有數據寫入前的網絡流讀取
- 12. iOS從網絡讀取txt
- 13. 爲HTTP請求讀取網絡流
- 14. 如何在scala中讀取網絡流?
- 15. 如何從數據流讀取數據
- 16. 從C++中的串行端口快速讀取常量數據流。網絡
- 17. 從網頁讀取數據
- 18. 閱讀異步網絡流
- 19. C#代碼在試圖從網絡流中讀取時掛起
- 20. 從XML網絡流中讀取整個元素
- 21. 從C#讀取ID3標籤從網絡#
- 22. 如果我從一個流讀取WebRequest.GetResponseStream我會從內存或網絡閱讀
- 23. 數據從網絡
- 24. 決定何時讀取網絡數據VS時從緩存
- 25. 從python網絡接口讀取和處理數據包
- 26. 如何處理從網絡讀取的緩衝數據?
- 27. UDP:從所有網絡接口讀取數據
- 28. 從網絡流中提取信息
- 29. 從onMessage讀取完整數據流
- 30. 從扳手讀取谷歌數據流
原始TCP是我會爲這樣的要求的最後一件事。你想達到什麼目的? –
我只是想傳輸文件。一切工作正常,如果我先沖洗文件名,然後是實際data.But如果我嘗試併發,說2在同一時間傳輸一些文件是任務數據 – user2160880