給定以下僞代碼。我將如何在給定的數據Java TCP如何讀取已發送的流大小(標題)並根據該大小繼續讀取
-1
A
回答
3
使用DataInputStream使您的生活變得輕鬆。
DataInputStream in = new DataInputStream(socket.getInputStream());
short myShortStreamSize = in.readShort();
byte[] payload = new byte[myShortStreamSize];
in.readFully(payload);
1
Socket
閱盡有getInputStream()
方法。您將使用返回的InputStream
並將myShortStreamSize
的字節讀取到byte[]
中,將其轉換爲代表您的有效負載大小的int/long,然後讀入另一個更大的有效負載本身。
0
您可以嘗試JBBP
@Bin class Struct { byte [] payload; }
@Bin class ParsedStream { Struct [] structs; }
ParsedStream parsed = JBBPParser.prepare("structs[_] { ushort size; byte [size] payload; }").parse(theInStream).mapTo(ParsedStream.class);
相關問題
- 1. 使用TCP套接字發送/讀取,字節大小異常
- 2. 如何獲取根的大小&&已使用的根的大小
- 3. 確定LocalSocket讀取大小
- 4. 如何繼續從命名管道/流發送/讀取消息
- 5. fgets讀取特定大小
- 6. ffmpeg讀取文件大小
- 7. 如何使用Windows套接字讀取TCP窗口大小?
- 8. 如何讀取字節的固定大小,繼續使用Ruby進行轉向?
- 9. 如果數組大小太大,我該如何從數組讀取數據.....!
- 10. Qt讀取許多圖像優化 - 如何只讀取大小?
- 11. fgets最大文件大小讀取
- 12. Boost.Asio的 - 設置最大讀取流大小
- 13. 如何讀取動態大小的字符串流?
- 14. 如何限制通過ObjectInputStream從Socket讀取的最大大小?
- 15. 爲什麼boost :: asio :: read緩衝區的數據大小小於讀取大小?
- 16. Valgrind無效的讀取的大小
- 17. Java讀取大寫/小寫字符並轉換它們
- 18. Java:從未知大小的數據庫中讀取值
- 19. Java:使用NIO讀取可變大小的數據包
- 20. Java NIO:讀取可變大小的數據塊
- 21. PHPSECLIB讀取目錄的總大小?
- 22. 讀取大小超過1.5GB的文件
- 23. 大小8的讀取無效 - Valgrind + C
- 24. 讀取未知大小的字符串
- 25. valgrind無效的讀取大小爲8
- 26. Swift 3:錯誤的UIView大小讀取
- 27. 無效的讀取大小1 valgrind
- 28. C++無效的讀取大小4 valgrind
- 29. valgrind無效的讀取大小
- 30. Javascript的addEventListener不讀取調整大小
@ Mrshll187爲什麼布賴恩關心你downvote?除了你和downvoter之外,爲什麼還要有人? – EJP 2013-02-08 20:27:14
@EJP這是我的假設,他是下來的選民。同樣,你爲什麼關心我的迴應? – stackoverflow 2013-02-08 21:28:53
@ Mrshll187因爲它是,而且是如此的離奇。爲什麼提供答案的人會成爲成千上萬成員中的第一個犯罪嫌疑人?如果他是,他爲什麼應要求將其撤銷? – EJP 2013-02-08 23:08:15