Реализовать 3-х стороннее рукопожатие для TCP в Java - PullRequest
1 голос
/ 28 октября 2010

Я хочу реализовать протокол TCP с использованием Java.Я прочитал документацию и примеры Sun, но все они просто открывают сокет, клиент ждет, пока сервер примет соединение, а затем отправляет данные.

Интересно, как я могу реализовать трехстороннее рукопожатие и проверку данных с помощью Java?Как сервер и клиент обмениваются порядковым номером?Предоставляет ли Java какой-либо класс / методы (или, по крайней мере, интерфейс) для реализации трехстороннего рукопожатия?

Может кто-нибудь дать мне несколько идей или ссылку на некоторые примеры?1007 *

Ответы [ 5 ]

1 голос
/ 12 апреля 2011

Да, это возможно.Вы можете получить доступ к IP-уровню в Java, используя такую ​​библиотеку, как JPCap.Остальная часть реализации TCP может быть построена вами.Это, конечно, нетривиальная задача.

1 голос
/ 28 октября 2010

Невозможно реализовать TCP в Java, так как у вас нет прямого доступа к уровню IP.Java позволяет работать на транспортном уровне (TCP, UDP), но не на сетевом уровне (IP).

Обратите внимание, что я имею в виду «стандартную» Java со стандартными библиотеками времени выполнения Java.Существует несколько систем (обычно встроенных), которые используют Java для всего, вплоть до уровня драйвера устройства.Я думаю, это не то, что вам нужно, но на всякий случай вот ссылка на полный стек TCP / IP, написанный на Java для встроенных систем:

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

0 голосов
/ 29 октября 2010

TCP уже выполняет всю работу по рукопожатию и порядковому номеру.Все, что вам нужно сделать, это создать Socket на клиенте и ServerSocket на сервере и принимать соединения от ServerSocket.Вам не нужно реализовывать TCP.Это сделано.Некоторое время назад; -)

0 голосов
/ 28 октября 2010

Ваш вопрос не совсем понятен (см. Другие ответы, сообщающие, что вы не можете реализовать TCP в Java).

Но, похоже, вы хотите реализовать протокол по TCP. В этом случае информация, которую вы видели до сих пор, является хорошей отправной точкой. Как только вы поймете связь, вы можете приступить к реализации протокола.

Делайте эти вещи, и когда у вас возникнут проблемы на уровне протокола, отправьте свои вопросы (с кодом) и получите помощь.

0 голосов
/ 28 октября 2010

В Sun JDK нет «сырых» сокетов. Вы можете иметь доступ к TCP или UDP или любому протоколу прикладного уровня, который реализован поверх TCP / UDP. Только.

...