1. Обзор
Класс сокетов является основным классом для Java для выполнения клиентских операций TCP. Сам этот класс использует код для связи через локальный стек TCP операционной системы хоста. Методы класса сокетов будут устанавливать и уничтожать соединения и устанавливать различные параметры розетки.
Класс Serversocket является основным классом для Java для выполнения операций на стороне сервера. Этот класс работает на сервере и прослушивает входящие TCP -соединения. Каждый сервер сокетов слушает порт сервера. Когда клиент удаленного хоста пытается подключиться к этому порту, сервер разжигается и возвращает обычный объект сокета, представляющий розетку между двумя хостами.
2. Что такое TCP?
TCP является ориентированным на соединение, надежным протоколом транспортного уровня на основе байтового потока. Коммуникация TCP делится на клиент и сервер, а соответственно соответствующие объекты являются сокетами и Serversocket.
Когда компьютер должен подключиться к другому удаленному компьютеру, протокол TCP позволяет им устанавливать соединение: виртуальная ссылка для отправки и получения данных. Протокол TCP отвечает за сбор информации и отправку их в соответствующем порядке, а затем правильно отталкивает их после получения их на приемном конце. Чтобы гарантировать, что пакет данных является точным во время передачи, TCP использует механизм повторной передачи: когда объект связи отправляет сообщение другому объекту связи, ему необходимо получить информацию о подтверждении другого объекта. Если информация о подтверждении не получена, отправленная только информация будет возмущена снова.
Iii. TCP Communication
1. Конструктор
Класс сокетов реализует клиентские розетки, и конструктор может указать хост и порт, к которому вы хотите подключиться. Хост может быть указан как inetAddress или строка, а порт всегда указывается как значение int от 0 до 65535.
Socket S = New Socket ("127.0.0.1", 10001); // Создание потокового сокета и подключите его к указанному номеру порта на указанном хосте.Cerversocket Class реализует гнезда сервера. Серверный сокет ожидает передачи запроса через сеть, он выполняет некоторые операции на основе запроса, а затем возвращает результат запрашиванию.
Serversocket SS = New Serversocket (10001); // Создать серверный сокет, связанный с конкретным портом
2. Пример: копирование файла TCP
Клиент:
Public Class ClientDemo {public static void main (string [] args) бросает неизвестное хостксплекс, ioException {socket s = new Socket ("127.0.0.1", 10004); BufferedReader BUF = new BufferedReader (new FileReader ("c: //Users/administrator//desktop/1.tsktop/1. line = null;/*printwriter out = new PrintWriter (s.getOutputStream (), true); while ((line = buf.readline ())! = null) {out.println (line); } */Bufferedwriter out = new BufferedWriter (новый outputStreamWriter (s.getOutputStream ())); while ((line = buf.readline ())! = null) {out.write (line); out.newline (); out.flush ();} s.shutdownoutput (); BufferedReader in = new BufferedReader (new InputStreamReader (s.getInputStream ()); str = in.readline (); System.out.println (str); s.close (); buf.close ();}}Серверная сторона:
открытый класс ServerDemo {public static void main (string [] args) бросает ioException {serversocket ss = new Serversocket (10004); Socket s = ss.accte (); BufferedReader in = new BufferedReader (New InputStreamRead (S.GetInputStream ()); строка = null; FileWriter ("c: //users//administrator//desktop/2.txt"), true); while ((line = in.readline ())! = null) {buf.println (line); }*/Bufferedwriter buf = new BufferedWriter (new FileWriter ("c: //users//administrator//desktop//2.txt")); while ((line = in.readline ())! = Null) {buf.write (line); buf.newline (); PrintWriter (s.getOutputStream (), true); out.println ("Передача успешно!"); Ss.close (); buf.close ();}}4. Приложение Сокета на просмотр
Мы можем написать сторону сервера в Eclipse, а затем получить доступ к ней с помощью браузера.
Например, код на стороне сервера:
открытый класс SocketServer {public static void main (string [] args) бросает ioException {serversocket server = new Serversocket (11000); Socket client = server.accep (); Printwriter out = new PrintWriter (client.getOutputStream (), true); out.println ("Привет!"); server.close (); }}Затем откройте браузер IE, введите http://192.168.1.120:11000/ в адрес (192.168.1.120 является локальным IP -адресом), и результат -
В обычных приложениях браузер выдает запрос на сервер Tomacat для получения ресурсов, таких как изображения веб -страницы. Tomca-это программное обеспечение на стороне сервера, написанное на Java.
Теперь мы пишем сторону сервера как:
открытый класс SocketServer {public static void main (string [] args) бросает ioException {serversocket server = new Serversocket (11000); Socket client = server.accep (); Printwriter out = new PrintWriter (client.getOutputStream (), true); BufferedReader in = new BufferedReader (новый inputStreamReader (client.getInputStream ())); String line = null; while ((line = in.readline ())! = null) System.out.println (line); out.println ("Привет!"); server.close (); }}Затем, когда доступа с браузером, вы можете увидеть, что данные заголовка запроса, отправленные браузером (клиентом) на сервер, являются:
Используя приведенные выше принципы, мы можем написать программное обеспечение на стороне браузера (клиент), аналогичное т.е. Сначала добавьте ресурс Demo.html в каталог установки Tomcat C: /apache-tomcat-7.0.62/webapps/myweb, а затем напишите клиенту, код выглядит следующим образом:
открытый класс clientDemo {public static void main (string [] args) бросает неизвестное хосткспений, ioException {socket s = new Socket ("192.168.1.120", 8080); printwriter out = new PrintWriter (s.getOutputStream (), true); // Отправить запрос на сервер. Http/1.1 "); out.println (" Принять:*/*"); out.println (" Host: 192.168.1.120:11000"); out.println("connection: Keep-alive "); // Вывод пустые линии, этот шаг незван. InputStreamReader (s.getInputStream ())); String Line = null; // возвращать файл ответа сервера while ((line = in.readline ())! = Null) {System.out.println (line);} s.close ();}}Далее, начните Tomcat. То есть дважды щелкните файл startup.bat в C: /apache-tomcat-7.0.62/bin. Затем запустите приведенный выше клиент -код, и вы можете увидеть данные ответа, возвращаемые Tomacat:
Суммировать
Выше приведено полный пример кода TCP Communication в этой статье о программировании сети Java, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Основы программирования сети Java: одностороннее общение
Пример кода для реализации связи сокетов в многопоточном программировании Java
Подробное объяснение модели потребительской модели Code of Thread Communication и механизма ожидания Java Multy-Threaded
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!