簡體   English   中英

在java中創建數據包?

[英]Packet creation in java?

我正在使用TCP套接字,我需要在Java中創建TCP數據包,以便我可以通過網絡傳輸我的文件包,並且它還可以幫助我將一些額外的信息與數據一起添加到數據包中。

可能嗎? 如果是的話,請你提供任何例子嗎?

提前致謝

您可以使用JPCAP構建原始TCP數據包,但是如果目的是傳輸文件,我會問您為什么需要。 要傳輸文件,您無需確定如何通過數據包傳輸99%以上的用例。

這是一個非常奇怪的要求,我非常懷疑你......真的......需要這樣做。

讓我們從你想要的方式開始你想要實現的目標:

...通過網絡傳輸我的文件[...]也可以幫助我添加一些額外的信息和數據。

因此,您希望將文件與一些其他數據/元數據一起傳輸。 目前尚不清楚元數據是否需要嵌入到文件數據中,但我不明白為什么,所以我不會假設。 (但它確實沒有太大區別。)

以下是一些可能的方法:

  1. 使用FTP協議傳輸文件和元數據。 文件和元數據可以視為一個單元(例如,在ZIP存檔中)或單獨的文件。 您可以安排此操作,以便它是服務器的客戶端,或服務器到客戶端的傳輸。 您可以使用現成的客戶端和服務器軟件。 FTPS是一種更安全的替代方案。

  2. 使用HTTP協議傳輸文件和元數據。 文件和元數據可以視為一個單元(例如MIME多部分文檔)或單獨的文檔。 休息至於FTP。 HTTPS是一種更安全的替代方案。

  3. 您可以在任何所需的端口上創建通過TCP / IP連接運行的自定義協議。 您可以以任何方式編碼和傳輸文件和元數據。 為了提高安全性,請使用基於TCP / IP連接的SSL / TLS。

  4. 您可以將文件拆分為小塊並通過UDP作為“數據包”發送。 您必須自己處理檢測和恢復丟包的詳細信息。 不建議這樣做。

  5. 您可以(理論上)使用JPCAP在原始網絡數據包上實現TCP / IP或UDP / IP。 然后通過剛剛創建的TCP / IP或UDP / IP堆棧運行上述之一。 這是一個非常糟糕的主意。 這是(大量的)(不必要的)工作。 它可能會導致應用程序的可靠性問題,並可能導致整個本地網絡。

我推薦選項1.或2.最好使用3.作為替代,如果有特殊原因,為什么HTTP和FTP協議不適合你。

(如果你真的想做5.那么如果你能找到任何使用JPCAP實現的TCP / IP的例子,我會感到非常驚訝。這個想法太瘋狂......)

如果你想控制單個數據包,大多數情況下TCP是你的錯誤協議 - 看看UDP。 (這可以通過Java中的DatagramSocket或DatagramChannel訪問。)

對於TCP,您只需要一個字節流(或實際上是兩個流 - 發送OutputStream和接收InputStream),而不必關心TCP實現發送的底層數據包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM