1. Две основные проблемы в сетевом программировании
Одним из них является то, как точно найти один или несколько хостов в сети, а другой - как надежно и эффективно передавать данные после поиска хоста.
В протоколе TCP/IP уровень IP в основном отвечает за местоположение сетевого хоста и маршрутизацию передачи данных. IP -адрес может однозначно определить хоста в Интернете.
Уровень TCP обеспечивает надежный (TCP) или не надежный (UDP) механизм передачи данных для применения, который является основным объектом сетевого программирования, и, как правило, не нужно заботиться о том, как обрабатывает данные IP-уровня.
Самая популярная модель сетевого программирования в настоящее время - структура клиента/сервера (C/S). То есть одна из сторон связи выступает в качестве сервера, чтобы дождаться, пока клиент отправит запрос и ответит. Клиент обращается к серверу, когда необходима служба. Сервер, как правило, всегда работает как демон, слушая сетевой порт. Как только клиент запрашивает его, он начнет процесс обслуживания, чтобы ответить на клиента и в то же время продолжать слушать сам сервисный порт, чтобы более поздние клиенты также могли своевременно получать услуги.
2. Два типа протоколов передачи: TCP/UDP
TCP-это аббревиатура протокола управления переносом, протокол, ориентированного на соединение, который обеспечивает надежную передачу. Передача через протокол TCP приводит к порядку без ошибок потоков данных. Между двумя парами розетчиков и приемника должно быть установлено соединение, чтобы общаться на основе протокола TCP. Когда один сокет (обычно серверный гнездо) ждет для установления соединения, другой розетку может потребовать подключения. После того, как эти два розета подключены, они могут выполнить двустороннюю передачу данных, и обе стороны могут выполнять операции отправки или приема.
UDP - это аббревиатура протокола Datagram пользователя. Это протокол без соединения. Каждая Datagram является независимой информацией, включая полный адрес источника или назначения. Он передается в пункт назначения в сети любым возможным пути. Следовательно, может ли он достичь пункта назначения, время для достижения пункта назначения, и правильность содержания не может быть гарантирована.
Сравнивать:
UDP:
1. Каждая данных дает полную информацию о адресах, поэтому нет необходимости устанавливать соединение между отправителем и получателем.
2. Существует ограничение размера, когда DP передает данные, и каждая передаваемая Datagram должна быть ограничена 64 КБ.
3. DP является ненадежным протоколом, а патограммы, отправленные отправителем, не обязательно поступают в приемник в том же заказе.
TCP:
1. Чтобы подключиться к протоколу соединения, перед передачей данных должно быть установлено соединение, поэтому время подключения требуется в TCP.
2. Предел размера данных передачи CP. Как только соединение установлено, розетки обеих сторон могут передавать большие данные в унифицированном формате.
3.CP является надежным протоколом, который гарантирует, что приемник полностью правильно получает все данные, отправленные отправителем.
приложение:
1. TCP имеет чрезвычайно сильную жизненную силу в сетевой связи. Например, удаленное соединение (Telnet) и передача файла (FTP) требуют надежного передачи данных различной длины. Тем не менее, надежная передача поступает по цене. Проверка правильности содержания данных неизбежно займет время обработки компьютера и пропускную способность сети. Следовательно, эффективность передачи TCP не так высока, как у UDP.
2. UDP прост в работе и требует только меньшего количества надзора, поэтому он обычно используется в приложениях клиента/сервера в распределенных системах с высокой надежностью в LAN. Например, системы видеоконференций не требуют абсолютной правильности аудио и видеодантеров, если согласованность гарантирована, в данном случае, очевидно, более разумно использовать UDP.
3. Программирование сети Java на основе сокетов
1. Это розетка
Две программы в сети реализуют обмен данными с помощью двухстороннего связи. Один конец этой двусторонней ссылки называется гнездами. Сокет обычно используется для подключения между клиентами и поставщиками услуг. Сокет является очень популярным интерфейсом программирования протокола TCP/IP. Гребень уникально определяется IP -адресом и номером порта.
Тем не менее, типы протоколов, поддерживаемых сокетами, являются не только TCP/IP, поэтому между ними нет необходимого соединения. В среде Java программирование сокетов в основном относится к сетевому программированию на основе протокола TCP/IP.
2. Процесс коммуникации по борьбе
Слушайте сервер (слушает), есть ли запрос на подключение на определенном порте. Сторона клиента выдает запрос Connect на сторону сервера, а сторона сервера отправляет сообщение принять обратно на сторону клиента. Соединение установлено. Как сервер, так и клиентская сторона могут общаться друг с другом с помощью отправки, записи и других методов.
Для полностью функционального розетки он должен включать следующую базовую структуру, а его рабочий процесс включает в себя следующие четыре основных шага:
(1) создать гнездо;
(2) открыть вход/отток, подключенный к розетку;
(3) прочитать/написать гнездо в соответствии с определенным протоколом;
(4) Закрыть гнездо.
3. Стройте гнездо
Создать сокет
Java предоставляет два класса сокет и Serversocket в пакете java.net, которые используются для представления клиента и сервера для двунаправленного соединения. Это два очень хорошо упакованных класса, и они очень просты в использовании. Метод строительства следующим образом:
Сокет (адрес inetaddress, int port);
Сокет (адрес inetaddress, int port, логический поток);
Сокет (String Host, Int Prot);
Сокет (строка хост, int prot, логический поток);
Сокет (SocketImpl Impl)
Сокет (String Host, int port, inetaddress localaddr, int localport)
Сокет (адрес inetAddress, int port, inetAddress localaddr, int localport)
Serversocket (int port);
Serversocket (int port, int backlog);
Serversocket (int port, int backlog, inetaddress bindaddr)
Адрес, хост и порт - это IP -адрес, имя хоста и номер порта другой стороны в двунаправленном соединении соответственно. Поток указывает, является ли розетка племенной розеткой или гнездой данных. Localport указывает номер порта местного хоста. LocalAddr и BindAddr являются адресом локальной машины (адрес хоста Serversocket). IMP - родительский класс розетки. Его можно использовать для создания Serversocket и создания розеток. COUNT представляет максимальное количество подключений, которые может поддерживать сервер. Например:
Socket Client = New Socket ("127.0.0.1", 8888);
Serversocket Server = New Serversocket (8888);
Обратите внимание, что вы должны быть осторожны при выборе порта. Каждый порт предоставляет конкретную услугу. Только путем предоставления правильного порта может быть получена соответствующая служба. Номера портов от 0 ~ 1023 зарезервированы системой. Например, номер порта службы HTTP составляет 80, номер порта сервиса Telnet составляет 21, а номер порта службы FTP составляет 23. Поэтому, когда мы выбираем номер порта, лучше всего выбрать номер, превышающий 1023, чтобы предотвратить конфликты.
Если при создании сокета возникает ошибка, будет сгенерировано ioException, и она должна быть обработана в программе. Таким образом, при создании розетки или Serversocket необходимо поймать или бросить исключение.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.