2010-10-28 81 views
1

我想使用Java實現TCP協議。我讀過Sun的文檔和例子,但是他們都只是打開一個套接字,客戶端等待服務器接受連接,然後發送數據。在Java中實現TCP的3路握手

我想知道如何使用Java實現三方握手和數據驗證?服務器和客戶端如何交換序列號? Java是否提供了任何類/方法(或至少是接口)來實現三次握手?

有人可以給我一些想法,或鏈接到一些例子嗎?

由於提前,

+0

你應該做的第一件事是接受你以前的問題的一些答案。人們並不熱衷於回答沒有道具的問題。 – KevinDTimm 2010-10-28 16:27:30

+0

感謝提醒凱文。我沒有意識到系統是如何工作的:(對不起 – chepukha 2011-03-03 17:42:02

回答

1

你不能在Java中實現TCP作爲您不必到IP層直接訪問。 Java允許您在傳輸層(TCP,UDP)上工作,但不在網絡層(IP)上工作。

請注意,我指的是具有標準Java運行時庫的「標準」Java。這裏有一些系統(通常是嵌入式系統),它們使用Java處理所有事情,直至設備驅動程序級別。我想這是不是你以後,但爲了以防萬一,這裏是用Java編寫的用於嵌入式系統的一個完整的TCP/IP協議棧的鏈接:

http://www.jopdesign.com/ejip/index.jsp

+0

謝謝大家的迴應,我想知道我需要解決的問題是在特定的模擬器上工作,所以我正在閱讀該模擬器的規範和API但是,無論如何,謝謝你。 – chepukha 2010-11-04 05:19:08

0

有中沒有「原始」插座Sun JDK。您可以訪問TCP或UDP或任何在TCP/UDP之上實現的應用程序級協議。只要。

0

您的問題並不完全清楚(請參閱其他答案,通知您無法在java中實現TCP)。

但是,它看起來像你想要的是通過TCP實現一個協議。在這種情況下,您目前看到的信息是一個很好的起點。一旦你理解了通信,你就可以開始實施一個協議。

做這些事情,當你在協議層面遇到問題時,發佈你的問題(用代碼),然後獲得幫助。

0

TCP已經爲你做了所有的握手和序列號。你所要做的就是在客戶端創建一個Socket,在服務器端創建一個ServerSocket,並接受來自ServerSocket的連接。你不必實現TCP。完成。前段時間;-)

1

是的,這是可能的。您可以使用像JPCap這樣的庫訪問Java中的IP層。其餘的TCP實現可以由你自己構建。這當然是一項不重要的任務。