Сокет сервера что это

Сокет сервера что это

Сетевые сокеты — способ взаимодействия любого приложения с системой на которой оно работает. Сокет — это интерфейс, который по сути представляет собой совокупность адреса в сети и используемого порта. Также часто термин употребляется применительно к Socket API, о котором рассказывается во второй части статьи.

Клиентское приложение всегда работает на локальной машине, подключенной к сети

Интерфейс между приложением и хост-машиной (Network-Application Interface) определяет как приложение может использовать сеть.

Сетевые сокеты и клиент серверная модель

Приложение клиента (посылает например URL в случае с вебом или запрос к MySQL) на определенный сетевой адрес и порт. В примере это localhost и порт 3306 — сервер в свою отвечает приложению. К приложению при этом могут обращаться множество клиентов, запросы и использованием сокета приходят на один и тот же адрес и обрабатываются одним пакетом. Таким образом работает клиент-серверая модель взаимодействия.

Чтобы написать приложение, которое могло бы обслуживать множество клиентов (последовательно и параллельно) нужно сокет API

Socket API — интерфейс используемый всеми интернет приложениями.

Socket API при соединении 2-х приложений может работать с потоками и с датаграммами :
  • потоки — отправка потока байтов с гарантированной доставкой
  • датаграммы — отдельные сообщения без грантии доставки

Сетевой сокет — комбинация IP адреса и номера порта, которые представляют собой способ адресации и обеспечивают нормальное взаимодействие большого количества приложений в рамках одной системы.

Один сокет не может использовать два приложения одновременно или два экземпляра одного приложения.

Вызовы в Socket API


SOCKET — вызов создает структуру

BIND — связывает локальный адрес с сокетом

LISTEN — заявляет о готовности установить соединение

ACCEPT — принимает входящее соединение

CONNECT — пробует установить соединение

SEND — отправляет данные в рамках соединения

RECEIVE — принимает информацию в рамках соединения

CLOSE — прерывает соединение

Перевод с дополнениями. Оригинал — тут>>>.

Как правило — два процесса общаются друг с другом с помощью одного из Inter Process Communication ( IPC ) механизма ядра, таких как:

  • pipe
  • очереди сообщений (Message queues)
  • общая память (shared memory)

Кроме перечисленных IPC — в ядре присутствует много других возможностей, но что если процессам необходимо обмениваться данными по сети?

Тут используется ещё один механизм IPC — сокеты.

Что такое сокет?

Сокеты (англ. socket — разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.

Кратко говоря — существует два типа сокетов — UNIX-сокеты (или сокеты домена UNIXUnix domain sockets) и INET-сокеты (IP-сокеты, network sockets).

UNIX-сокеты чвляются частью механизма IPC и позволяют обмен данными в обоих направлениях между процессами, работающими на одной машине.

INET-сокеты в свою очередь представляют собой механизм, позволяющий выполнять коммуникацию между процессами по сети.

Грубо говоря — если UNIX-сокет использует файл в файловой системе, то INET-сокет — требует присваивания сетевого адреса и порта.

Больше про сокеты:

Коммуникация в среде TCP/IP происходит по клиент-серверной модели, т.е. — клиент инициализирует связь, а сервер его принимает.

Ниже — пример сервера, который будет работать как демон и ожидать подключения клиента, а при инициализации клиентом соединения — передаст ему дату и время.

Socket сервер

Наш сервер будет выглядеть следующим образом:

Флаг —tcp для netstat указывает на то, что требуется вывести информацию только по INET-сокетам.

Самый простой способ получить данные от нашего сервера — с помощью telnet , проверяем ещё раз:

Теперь — давайте рассмотрим сам код сервера.

  • с помощью вызова функции socket() в области ядра создаётся неименованный сокет, и возвращается его socket descriptor
  • первым аргументом этой функции передаётся тип домена. Т.к. мы будем использовать сеть — то используем тип сокета AF_INET (IPv4).
  • вторым аргументом — SOCK_STREAM , который указывает на тип протокола. Для TCP — это будет SOCK_STREAM , для UDP — SOCK_DGRAM
  • третий аргумент оставляем по умолчанию — тут ядро само решит какой тип протокола использовать (т.к. мы указали SOCK_STREAM — то будет выбран TCP)
Читайте также:  Светодиодные ленты с пультом управления

Далее — вызывается функция bind () :

  • bind() создаёт сокет используя параметры из структуры serv_addr (протокол, IP-адрес и порт)
  • вызов функции listen() со вторым аргументом 10 указывает на макс. допустимое кол-во подключений. Первым аргументом — передаётся дескриптор сокета, который необходимо прослушивать.
  • сервер запускает бесконченый цикл, ожидая входящего соединения, и вызывает accept() , как только соединение установлено. В свою очередь accept() создаёт новый сокет для каждого соединения, вовзращает дескриптор сокета
  • как только соединение установлено (т.е. сокет создан) — функция snprintf() вписывает время и дату в буфер, после чего вызывается write() , которая вписывает данные из буфера в сокет

Socket клиент

Перейдём ко второй программе — клиенту.

Код её будет выглядеть следующим образом:

Кратко рассмотрим его:

  • аналогично серверу — создаём сокет
  • в структуру sockaddr_in с именем serv_addr заносятся протокол, порт (5000) и адрес сервера (первый аргумент — argv[1] )
  • функция connect() пытается установить соединение с хостом, используя данные из структуры serv_addr

И в конце-концов — клиент с помощью read() получает данные из своего сокета, в который поступают данные от сокета на сервере.

Собираем клиент, и пробуем подключиться к нашему серверу:

уПЛЕФ — ХУФТПКУФЧП ДЧХОБРТБЧМЕООПК УЧСЪЙ, ЛПФПТПЕ НПЦЕФ ЙУРПМШЪПЧБФШУС ДМС ЧЪБЙНПДЕКУФЧЙС У ДТХЗЙН РТПГЕУУПН ОБ ПДОПК Й ФПК ЦЕ НБЫЙОЕ ЙМЙ У РТПГЕУУПН, ЪБРХЭЕООЩН ОБ ДТХЗЙИ НБЫЙОБИ. рТПЗТБННЩ йОФЕТОЕФБ ФБЛЙЕ ЛБЛ Telnet, rlogin, FTP, talk , Й World Wide Web ЙУРПМШЪХАФ УПЛЕФЩ.

оБРТЙНЕТ, НПЦОП РПМХЮЙФШ WWW-УФТБОЙГХ ПФ УЕТЧЕТБ Web, ЙУРПМШЪХС РТПЗТБННХ Telnet , ФБЛ ЛБЛ ПОЙ ПВЕ ЙУРПМШЪХАФ УПЛЕФЩ ДМС УЕФЕЧПЗП ЧЪБЙНПДЕКУФЧЙС. дМС ПФЛТЩФЙС РПДЛМАЮЕОЙС У УЕТЧЕТПН WWW ОБ www.codesourcery.com, ОЕПВИПДЙНП ЙУРПМШЪПЧБФШ telnet www.codesourcery.com 80 . лПОУФБОФБ 80 ПРТЕДЕМСЕФ РПДЛМАЮЕОЙЕ Л Web УЕТЧЕТХ. еУМЙ РПУМЕ ФПЗП, ЛБЛ РПДЛМАЮЕОЙЕ ВХДЕФ ХУФБОПЧМЕОП, РЕТЕДБФШ ЛПНБОДХ get /, ФП Web УЕТЧЕТХ ЮЕТЕЪ УПЛЕФЩ ВХДЕФ ПФРТБЧМЕОП УППВЭЕОЙЕ, ОБ ЛПФПТПЕ ПО ПФЧЕФЙФ, РЕТЕДБЧ ЙУИПДОЩК ФЕЛУФ ДПНБЫОЕК HTML УФТБОЙГЩ Й ЪБФЕН ЪБЛТПЕФ РПДЛМАЮЕОЙЕ.

пУОПЧЩ УПЛЕФПЧ

рТЙ УПЪДБОЙЙ УПЛЕФБ, ОЕПВИПДЙНП ПРТЕДЕМЙФШ ФТЙ РБТБНЕФТБ: УФЙМШ ЧЪБЙНПДЕКУФЧЙС, РТПУФТБОУФЧП ЙНЕО, Й РТФПЛПМ. уФЙМШ ЧЪБЙНПДЕКУФЧЙС ЛПОФТПМЙТХЕФ, ЛБЛ УПЛЕФ ПВТБВБФЩЧБЕФ РЕТЕДБЧБЕНЩЕ ДБООЩЕ, Й ПРТЕДЕМСЕФ ЛПМЙЮЕУФЧП РБТФОЕТПЧ ЧЪБЙНПДЕКУФЧЙС. юЕТЕЪ УПЛЕФЩ ДБООЩЕ РЕТЕДБАФУС ВМПЛБНЙ (РБЛЕФБНЙ). уФЙМШ ЧЪБЙНПДЕКУФЧЙС ПРТЕДЕМСЕФ, ЛБЛ ЬФЙ РБЛЕФЩ ВХДХФ ПВТБВПФБОЩ Й ЛБЛ ПОЙ РЕТЕДБАФУС ПФ ПФРТБЧЙФЕМС Л РПМХЮБФЕМА.

  • уФЙМЙ УПЕДЙОЕОЙС ЗБТБОФЙТХАФ ДПУФБЧЛХ ЧУЕИ РБЛЕФПЧ Ч ФПН РПТСДЛЕ, Ч ЛБЛПН ПОЙ ВЩМЙ ПФРТБЧМЕОЩ. еУМЙ ЧП ЧТЕНС РЕТЕДБЮЙ РБЛЕФЩ ВЩМЙ РПФЕТСОЩ ЙМЙ ДПУФБЧМЕОЩ Ч ОЕРТБЧЙМШОПН РПТСДЛЕ, РПМХЮБФЕМШ БЧФПНБФЙЮЕУЛЙ ПФРТБЧМСЕФ ЪБРТПУ ОБ ЙИ РПЧФПТОХА РЕТЕДБЮХ. уФЙМШ УПЕДЙОЕОЙС ОБРПНЙОБЕФ ФЕМЕЖПООЩК ЪЧПОПЛ: БДТЕУБ ПФРТБЧЙФЕМС Й РПМХЮБФЕМС ЖЙЛУЙТХАФУС Ч ОБЮБМЕ УПЕДЙОЕОЙС, РТЙ ХУФБОПЧЛЕ РПДЛМАЮЕОЙС.
  • уФЙМЙ ДБФБЗТБН ОЕ ЗБТБОФЙТХЕФ ДПУФБЧЛЙ Й РТБЧЙМШОПЗП РПТСДЛБ РТЙВЩФЙС. рБЛЕФЩ НПЗХФ ВЩФШ РПФЕТСОЩ ЙМЙ РЕТЕХРПТСДПЮЕОЩ Ч РХФЙ ЙЪ-ЪБ УЕФЕЧЩИ ПЫЙВПЛ. лБЦДЩК РБЛЕФ ДПМЦЕО ВЩФШ РПНЕЮЕО ЕЗП БДТЕУБФПН, Й ОЕФ ЗБТБОФЙЙ, ЮФП ПО ВХДЕФ ДПУФБЧМЕО. уЙУФЕНБ ЗБТБОФЙТХЕФ ФПМШЛП "НБЛУЙНБМШОЩЕ ХУЙМЙС", РПЬФПНХ РБЛЕФЩ НПЗХФ ЙУЮЕЪОХФШ ЙМЙ РТЙВЩФШ Ч ТБЪМЙЮОПН РПТСДЛЕ. уПЛЕФ УФЙМС ДБФБЗТБНЩ ЧЕДЕФ УЕВС УИПДОП У РПЮФПК. пФРТБЧЙФЕМШ ПРТЕДЕМСЕФ БДТЕУ РПМХЮБФЕМС ДМС ЛБЦДПЗП ЙОДЙЧЙДХБМШОПЗП УППВЭЕОЙС.

рТПУФТБОУФЧП ЙНЕО ПРТЕДЕМСЕФ, ЛБЛ ЪБРЙУБОЩ БДТЕУБ УПЛЕФБ ( socket addresses ). бДТЕУ УПЛЕФБ ЙДЕОФЙЖЙГЙТХЕФ ПДЙО ЛПОЕГ РПДЛМАЮЕОЙС УПЛЕФБ. оБРТЙНЕТ, БДТЕУБ УПЛЕФБ Ч МПЛБМШОПН РТПУФТБОУФЧЕ ЙНЕО СЧМСАФУС ПВЩЮОЩНЙ ЙНЕОБНЙ ЖБКМПЧ. ч РТПУФТБОУФЧЕ ЙНЕО йОФЕТОЕФ БДТЕУ УПЛЕФБ УПУФПЙФ ЙЪ йОФЕТОЕФ БДТЕУБ ( IP БДТЕУ) ЗМБЧОПЗП ЛПНРШАФЕТБ, РТЙУПЕДЙОЕООПЗП Л УЕФЙ Й ОПНЕТБ РПТФБ, ЛПФПТЩК ЙДЕОФЙЖЙГЙТХЕФ УПЛЕФ УТЕДЙ НОПЦЕУФЧБ УПЛЕФПЧ ОБ ФПН ЦЕ ЗМБЧОПН ЛПНРШАФЕТЕ.

рТПФПЛПМ ПРТЕДЕМСЕФ, ЛБЛ РЕТЕДБАФУС ДБООЩЕ. уХЭЕУФЧХАФ УМЕДХАЭЙЕ ЧЙДЩ РТПФПЛПМПЧ: TCP/IP , РЕТЧЙЮОЩЕ УЕФЕЧЩЕ РТПФПЛПМЩ, ЙУРПМШЪХЕНЩЕ йОФЕТОЕФПН; УЕФЕЧПК РТПФПЛПМ AppleTalk ; МПЛБМШОЩК UNIX РТПФПЛПМ ЧЪБЙНПДЕКУФЧЙС. оЕ ЧУЕ ЛПНВЙОБГЙЙ УФЙМЕК, РТПУФТБОУФЧ ЙНЕО Й РТПФПЛПМПЧ РПДДЕТЦЙЧБАФУС.

уЙУФЕНОЩЕ ЧЩЪПЧЩ

чЙДЩ УЙУФЕНОЩИ ЧЩЪПЧПЧ:

  • socket — УПЪДБФШ УПЛЕФ
  • closes — ХОЙЮФПЦЙФШ УПЛЕФ
  • connect — УПЪДБФШ УПЕДЙОЕОЙЕ НЕЦДХ ДЧХНС УПЛЕФБНЙ
  • bind — РТЙЧСЪБФШ УПЛЕФ Л РПТФХ УЕТЧЕТБ
  • listen — ОБУФТПКЛБ УПЛЕФБ ДМС РТЙОСФЙС РПДЛМАЮЕОЙК
  • accept — РТЙОСФШ ЪБРТПУ ОБ УПЕДЙОЕОЙЕ Й УПЪДБФШ УПЛЕФ ДМС РТПГЕУУБ ЧЪБЙНПДЕКУФЧЙС

уПЛЕФЩ РТЕДУФБЧМСАФУС ДЕУЛТЙРФПТБНЙ ЖБКМПЧ.

уПЪДБОЙЕ Й ХОЙЮФПЦЕОЙЕ УПЛЕФПЧ

у РПНПЭША ЖХОЛГЙК socket Й close УПЪДБАФУС Й ХОЙЮФПЦБАФУС УПЛЕФЩ. рТЙ УПЪДБОЙЙ УПЛЕФБ, ОЕПВИПДЙНП ПРТЕДЕМЙФШ ФТЙ РБТБНЕФТБ УПЛЕФБ: РТПУФТБОУФЧП ЙНЕО, УФЙМШ ЧЪБЙНПДЕКУФЧЙС Й РТПФПЛПМ.

Читайте также:  Как узнать прошитая ps3 или нет

дМС ХЛБЪБОЙС РТПУФТБОУФЧБ ЙНЕО ЙУРПМШЪХАФУС ЛПОУФБОФЩ, ОБЮЙОБАЭЙЕУС У PF_ (УПЛТБЭЕОЙЕ "УЕНЕКУФЧП РТПФПЛПМБ"). оБРТЙНЕТ, PF_LOCAL ЙМЙ PF_UNIX ПРТЕДЕМСАФ МПЛБМШОПЕ РТПУФТБОУФЧП ЙНЕО, Й PF_INET ПРТЕДЕМСЕФ йОФЕТОЕФ РТПУФТБОУФЧП ЙНЕО.

чФПТПК РБТБНЕФТ, УФЙМШ ЧЪБЙНПДЕКУФЧЙС, РТЕДУФБЧМСЕФ УПВПК ЛПОУФБОФХ, ОБЮЙОБАЭЙАУС У SOCK_ . SOCK_STREAM ПРЕТЕДЕМСЕФ УФЙМШ ЧЪБЙНПДЕКФУЧЙС УПЕДЙОЕОЙЕ, SOCK_DGRAM — УФЙМШ ДБФБЗТБНЩ.

фТЕФЙК РБТБНЕФТ, РТПФПЛПМ, ПРТЕДЕМСЕФ НЕИБОЙЪН ОЙЦОЕЗП ХТПЧОС ДМС РЕТЕДБЮЙ Й РПМХЮЕОЙС ДБООЩИ. дМС ЛБЦДПК ЛПНВЙОБГЙЙ РТПУФТБОУФЧП ЙНЕО — УФЙМШ ЧЪБЙНПДЕМКУФЧЙС УХЭЕУФЧХЕФ УЧПК РТПФПЛПМ.

дМС ЛБЦДПК РБТЩ УХЭЕУФЧХЕФ МХЮЫЙК РТПФПЛПМ, РПЬФПНХ НПЦОП ХЛБЪБФШ 0, ЮФП УППФЧЕФУЧХЕФ ЬФПНХ РТПФПЛПМХ. еУМЙ ЛПНБОДБ socket ЧЩРПМОЕОБ ХУРЕЫОП, Ч ЛБЮЕУФЧЕ ТЕЪХМШФБФБ ЧПЪЧТБЭБЕФУС ДЕУЛТЙРФПТ ЖБКМБ ДМС УПЛЕФБ. у РПНПЭША ЛПНБОД read Й write , НПЦОП ЮЙФБФШ Й ЪБРЙУЩЧБФШ ДБООЩЕ Ч УПЛЕФ.

чЩЪПЧ connect

дМС УПЪДБОЙС УПЕДЙОЕОЙЕ НЕЦДХ ДЧХНС УПЛЕФБНЙ, ЛМЙЕОФ ЧЩЪЩЧБЕФ connect , РЕТЕДБЧБС БДТЕУ УПЛЕФБ УЕТЧЕТБ ДМС РПДЛМАЮЕОЙС. лМЙЕОФ — РТПГЕУУ, ЙОЙГЙБМЙЪЙТХАЭЙК УПЕДЙОЕОЙЕ, Б УЕТЧЕТ — РТПГЕУУ, ПЦЙДБАЭЙК ТБЪТЕЫЕОЙС УПЕДЙОЕОЙС. лМЙЕОФ РПУЩМБЕФ ЪБРТПУ connect , ЮФПВЩ ЙОЙГЙБМЙЪЙТПЧБФШ УПЕДЙОЕОЙЕ НЕЦДХ МПЛБМШОЩН УПЛЕФПН Й УПЛЕФПН УЕТЧЕТБ, РЕТЕДБООЩН Ч ЛБЮЕУФЧЕ ЧФПТПЗП РБТБНЕФТБ. ч ЛБЮЕУФЧЕ ФТЕФШЕЗП РБТБНЕФТБ РЕТЕДБЕФУС ДМЙОБ, Ч ВБКФБИ, БДТЕУОПК УФТХЛФХТЩ, ОБ ЛПФПТХА ХЛБЪЩЧБЕФ ЧФПТПК РБТБНЕФТ.

пФРТБЧЛБ ДБООЩИ

мАВБС ФЕИОЙЛБ ЪБРЙУЙ Ч ДЕУЛТЙРФПТ ЖБКМБ, НПЦЕФ ЙУРПМШЪПЧБФШУС РТЙ ЪБРЙУЙ Ч УПЛЕФ. жХОЛГЙС send , ПРТЕДЕМЕООБС ДМС ДЕУЛТЙРФПТПЧ ЖБКМПЧ УПЛЕФБ, БОБМПЗЙЮОБ ЖХОЛГЙЙ write У ОЕУЛПМШЛЙНЙ ДПРПМОЙФЕМШОЩНЙ РБТБНЕФТБНЙ.

уЕТЧЕТЩ

гЙЛМ ЦЙЪОЙ УЕТЧЕТБ УПУФПЙФ ЙЪ УПЪДБОЙС УПЛЕФБ, РТЙЧСЪЛЙ УПЛЕФБ Л БДТЕУХ, ЧЩЪПЧБ listen , ТБЪТЕЫБАЭЕЗП УПЕДЙОЕОЙЕ У УПЛЕФПН, ЧЩЪПЧБ accept , РТЙОЙНБАЭЕЗП ЧИПДСЭЙЕ УПЕДЙОЕОЙС, Й ЪБФЕН ЪБЛТЩФЙС УПЛЕФБ. дБООЩЕ ОЕ ЮЙФБАФУС Й ОЕ ЪБРЙУЩЧБАФУС ОЕРПУТЕДУФЧЕООП ЮЕТЕЪ УПЛЕФ УЕТЧЕТБ; ЧНЕУФП ЬФПЗП, ЛБЦДЩК ТБЪ ЛПЗДБ РТПЗТБННБ РТЙОЙНБЕФ ОПЧПЕ УПЕДЙОЕОЙЕ, Linux УПЪДБЕФ ПФДЕМШОЩК УПЛЕФ, ЙУРПМШЪХЕФУС РТЙ РЕТЕДБЮЕ ДБООЩИ РП ЬФПНХ УПЕДЙОЕОЙА. ч ЬФПН ТБЪДЕМЕ ТБУУНБФТЙЧБАФУС ЧЩЪПЧЩ bind, listen Й accept .

у РПНПЭША ЛПНБОДЩ bind БДТЕУ УЕТЧЕТБ ДПМЦЕО ВЩФШ РТЙЧСЪБО Л УПЛЕФХ. рЕТЧЩК РБТБНЕФТ ЛПНБОДЩ — ДЕУЛТЙРФПТ ЖБКМБ УПЛЕФБ. чФПТПК РБТБНЕФТ — ХЛБЪБФЕМШ ОБ УФТХЛФХТХ БДТЕУБ УЕТЧЕТБ; ЖПТНБФ ЛПФПТПЗП ЪБЧЙУЙФ ПФ УЕНЕКУФЧБ БДТЕУБ. фТЕФЙК РБТБНЕФТ — ДМЙОБ УФТХЛФХТЩ БДТЕУБ, Ч ВБКФБИ.

лПЗДБ БДТЕУ УЧСЪБО У УПЛЕФПН УФЙМС УПЕДЙОЕОЙЕ, ОЕПВИПДЙНП ЧЩЪЧБФШ listen , ЮФПВЩ ХЛБЪБФШ, ЮФП ЬФП — УЕТЧЕТ. рЕТЧЩК РБТБНЕФТ ЛПНБОДЩ — ДЕУЛТЙРФПТ ЖБКМБ УПЛЕФБ. чФПТПК РБТБНЕФТ ПРТЕДЕМСЕФ, ДМЙОХ ПЮЕТЕДЙ ПЦЙДБАЭЙИ УПЕДЙОЕОЙК. еУМЙ ПЮЕТЕДШ ЪБРПМОЕОБ, ДПРПМОЙФЕМШОЩЕ УПЕДЙОЕОЙС ВХДХФ ПФЧЕТЗОХФЩ. ьФП ОЕ ПЗТБОЙЮЙЧБЕФ ПВЭЕЕ ЛПМЙЮЕУФЧП УПЕДЙОЕОЙК, ЛПФПТЩЕ УЕТЧЕТ НПЦЕФ ПВТБВПФБФШ; ЬФП ПЗТБОЙЮЙЧБЕФ ФПМШЛП ЮЙУМП ЛМЙЕОФПЧ, РЩФБАЭЙИУС УПЕДЙОЙФШУС Й ОЕ РПМХЮЙЧЫЙИ РПДФЧЕТЦДЕОЙЕ.

у РПНПЭША ЛПНБОДЩ accept УЕТЧЕТ РТЙОЙНБЕФ ЪБРТПУ ОБ УПЕДЙОЕОЙЕ ПФ ЛМЙЕОФБ. рЕТЧЩК РБТБНЕФТ ЧЩЪПЧБ — ДЕУЛТЙРФПТ ЖБКМБ УПЛЕФБ. чФПТПК РБТБНЕФТ ХЛБЪЩЧБЕФ ОБ УФТХЛФХТХ БДТЕУБ УПЛЕФБ, Ч ЛПФПТПК ИТБОЙФУС БДТЕУ ЛМЙЕОФУЛПЗП УПЛЕФБ. фТЕФЙК РБТБНЕФТ — ДМЙОБ, Ч ВБКФБИ, УФТХЛФХТЩ БДТЕУБ УПЛЕФБ. уЕТЧЕТ НПЦЕФ ЙУРПМШЪПЧБФШ БДТЕУ ЛМЙЕОФБ, ЮФПВЩ ПРТЕДЕМЙФШ, ФТЕВХЕФУС МЙ ДЕКУФЧЙФЕМШОП ЧЪБЙНПДЕКУФЧПЧБФШ У ЛМЙЕОФПН.

чЩЪПЧ accept УПЪДБЕФ ОПЧЩК УПЛЕФ ДМС ЧЪБЙНПДЕКУФЧЙС У ЛМЙЕОФПН Й ЧПЪЧТБЭБЕФ УППФЧЕФУФЧХАЭЙК ДЕУЛТЙРФПТ ЖБКМБ. пТЙЗЙОБМШОЩК УПЛЕФ УЕТЧЕТБ РТПДПМЦБЕФ РТЙОЙНБФШ ОПЧЩЕ ЛМЙЕОФУЛЙЕ УПЕДЙОЕОЙС.

дМС ЮФЕОЙС ДБООЩИ ЙЪ УПЛЕФБ, ВЕЪ ХДБМЕОЙС ЙИ ЙЪ ЧИПДОПК ПЮЕТЕДЙ, ЙУРПМШЪХЕФУС ЛПНБОДБ recv . ч ЛБЮЕУФЧЕ РБТБНЕФТПЧ РЕТЕДБАФУС ФЕЦЕ БТЗХНЕОФЩ, ЮФП Й Ч ЛПНБОДЕ read , РМАУ ДПРПМОЙФЕМШОЩК РБТБНЕФТ FLAGS . жМБЗ MSG_PEEK ХЛБЪЩЧБЕФ, ЮФП ДБООЩЕ ДПМЦОЩ ВЩФШ РТПЮЙФБОЩ, ОП ОЕ ХДБМЕОЩ ЙЪ ЧИПДОПК ПЮЕТЕДЙ.

мПЛБМШОЩЕ УПЛЕФЩ

уПЛЕФЩ, РПДЛМАЮБАЭЙЕ РТПГЕУУЩ ОБ ПДОПН ЛПНРШАФЕТЕ НПЗХФ ЙУРПМШЪПЧБФШ МПЛБМШОПЕ РТПУФТБОУФЧП ЙНЕО, РТЕДУФБЧМСАЭЙК УПВПК УЙОПОЙН ДМС PF_LOCAL Й PF_UNIX . пОЙ ОБЪЩЧБАФУС МПЛБМШОЩНЙ УПЛЕФБНЙ ЙМЙ УПЛЕФБНЙ UNIX-ДПНЕОБ. бДТЕУБ ЬФЙИ УПЛЕФПЧ, ПРТЕДЕМСЕНЩЕ ЙНЕОБНЙ ЖБКМПЧ, ЙУРПМШЪХАФУС ФПМШЛП РТЙ УПЪДБОЙЙ УПЕДЙОЕОЙС.

йНС УПЛЕФБ ХЛБЪЩЧБЕФУС Ч УФТХЛФХТЕ sockaddr_un . еУМЙ Ч AF_LOCAL ХУФБОПЧМЕОП РПМЕ sun_family , ЬФП ХЛБЪЩЧБЕФ ОБ ФП, ЮФП БДТУ Ч ДПЛБМШОПН РТПУФТБОУФЧЕ ЙНЕО. рПМЕ Sun_path ХЛБЪЩЧБЕФ, ЮФП ЙУРПМШЪХЕФУС ЙНС ЖБКМБ; НБЛУЙНБМШОБС ДМЙОБ РПМС — 108 ВБКФ. дМС ЧЩЮЙУМЕОЙС ДМЙОЩ struct sockaddr_un ЙУРПМШЪХЕФУС НБЛТПЛПНБОДБ SUN_LEN . нПЦЕФ ЙУРПМШЪПЧБФШУС МАВПЕ ЙНС ЖБКМБ, ОП ДМС РТПГЕУУБ ДПМЦОП ВЩФШ ХУФБОПЧМЕОП РТБЧП ОБ ЪБРЙУШ Ч ЛБФБМПЗ. юФПВ УПЕДЙОЕОЙФШУС У УПЛЕФПН, РТПГЕУУБ ДПМЦЕО ЙНЕФШ РТБЧП ОБ ЮФЕОЙС ЖБКМБ. иПФС ТБЪМЙЮОЩЕ ЛПНРШАФЕТЩ НПЗХФ УПЧНЕУФОП ЙУРПМШЪПЧБФШ ПДОХ ЖБКМПЧХА УЙУФЕНХ, ФПМШЛП РТПГЕУУЩ, ЪБРХЭЕООЩЕ ОБ ЬФПН ЛПНРШАФЕТЕ, НПЗХФ ЧЪБЙНПДЕКУФЧПЧБФШ ЙУРПМШЪХС УПЛЕФЩ МПЛБМШОПЗП РТПУФТБОУФЧБ ЙНЕО.

Читайте также:  Блок питания rs 460 pcap a3

еДЙОУФЧЕООЩК ДПРХУФЙНЩК РТПФПЛПМ ДМС МПЛБМШОПЗП РТПУФТБОУФЧБ ЙНЕО — 0. рПУЛПМШЛХ ПО ОБИПДЙФУС Ч ЖБКМПЧПК УЙУФЕНЕ, МПЛБМШОЩК УПЛЕФ РТЕДУФБЧМЕО ЛБЛ ЖБКМ.

оБРТЙНЕТ, ПВТБФЙФЕ ЧОЙНБОЙЕ ОБ ОБЮБМШОХА s:

чЩЪПЧ unlink ХДБМСЕФ МПЛБМШОЩК УПЛЕФ, РТЙ ЪБЧЕТЫЕОЙЙ ТБВПФЩ У ОЙН.

рТЙНЕТ ЙУРПМШЪПЧБОЙС МПЛБМШОЩИ УПЛЕФПЧ

ч МЙУФЙОЗЕ 5.10 РТЕДУФБЧМЕОБ РТПЗТБННБ УЕТЧЕТБ, Ч ЛПФПТПК УПЪДБЕФУС МПЛБМШОЩК УПЛЕФ Й УМХЫБЕФ ЪБРТПУЩ ОБ УПЕДЙОЕОЙС У УЕТЧЕТПН. рТЙ РПМХЮЕОЙЙ ЪБРТПУБ ОБ УПЕДЙОЕОЙЕ, УЕТЧЕТ ЮЙФБЕФ ФЕЛУФПЧЩЕ УППВЭЕОЙС, РЕТЕДБЧБЕНЩЕ ЮЕТЕЪ УПЕДЙОЕОЙЕ Й РЕЮБФБЕФ ЙИ. еУМЙ ПДОП ЙЪ ЬФЙИ УППВЭЕОЙК — "ЧЩИПД", РТПЗТБННБ УЕТЧЕТБ ХДБМСЕФ УПЛЕФ Й ЪБЧЕТЫБЕФУС. рТПЗТБННБ socket-server РТЕДРПМБЗБЕФ, ЮФП РХФШ Л УПЛЕФХ РЕТЕДБЕФУС ЮЕТЕЪ РБТБНЕФТ ЛПНБОДОПК УФТПЛЙ.

лМЙЕОФ-РТПЗТБННБ, РТЕДУФБЧМЕООБС Ч МЙУФЙОЗЕ 5.11, УПЕДЙОСЕФУС У МПЛБМШОЩН УПЛЕФПН Й РПУЩМБЕФ УППВЭЕОЙС. рХФШ Л УПЛЕФХ Й УППВЭЕОЙС РЕТЕДБtФУС ЮЕТЕЪ ЛПНБОДОХА УФТПЛХ.

рЕТЕД РЕТЕДБЮЕК УППВЭЕОЙС, РПУЩМБЕФУС ТБЪНЕТ УППВЭЕОЙС Ч ВБКФБИ Ч ЛБЮЕУФЧЕ РЕТЕНЕООПК length. уЕТЧЕТ УПИТБОСЕФ ТБЪНЕТ УППВЭЕОЙС, ДМС ЧЩДЕМЕОЙС РБНСФЙ РПД УППВЭЕОЙЕ. юФПВЩ ЧЩРПМОЙФШ ЬФПФ РТЙНЕТ, ОЕПВИПДЙНП ЪБРХУФЙФШ УЕТЧЕТ-РТПЗТБННХ Ч ПДОПН ПЛОЕ, ПРТЕДЕМЙФШ РХФШ Л УПЛЕФХ.

ч ДТХЗПН ПЛОЕ ЪБРХУФЙФШ ЛМЙЕОФ-РТПЗТБННХ ОЕУЛПМШЛП ТБЪ, ПРЕТЕДЕМСС ПДЙО Й ФПФ ЦЕ РХФШ УПЛЕФБ Й РПУЩМБС ЛМЙЕОФХ УППВЭЕОЙЕ:

уЕТЧЕТ-РТПЗТБННБ РПМХЮБЕФ Й РЕЮБФБЕФ ЬФЙ УППВЭЕОЙС. дМС ЪБЛТЩФЙС УПЕДЙОЕОЙС, ЛМЙЕОФ РПУЩМБЕФ УППВЭЕОЙЕ "quit":

Internet-Domain УПЛЕФЩ

CПЛЕФЩ UNIX-domain ЙУРПМШЪПЧБФШУС ФПМШЛП ДМС ЧЪБЙНПДЕКУФЧЙС ДЧХИ РТПГЕУУПЧ ФПМШЛП ОБ ПДОПН ЛПНРШАФЕТЕ. уПЛЕФЩ Internet, ЙУРПМШЪХАФУС ДМС УПЕДЙОЕОЙС ОЕУЛПМШЛЙИ РТПГЕУУПЧ ОБ ТБЪМЙЮОЩИ НБЫЙОБИ, РПДЛМАЮЕООЩИ Л УЕФЙ.

дМС УПЕДЙОЕОЙС РТПГЕУУПЧ ЮЕТЕЪ йОФЕТОЕФ УПЛЕФЩ ЙУРПМШЪХАФ РТПУФТБОУФЧП ЙНЕО йОФЕТОЕФ ХЛБЪЩЧБЕНПЕ У РПНПЭША PF_INET . вПМШЫЙОУФЧП РТПФПЛПМПЧ СЧМСАФУС TCP/IP . йОФЕТОЕФ РТПФПЛПМ ( IP ), РТПФПЛПМ ОЙЦОЕЗП ХТПЧОС, ПФРТБЧМСЕФ РБЛЕФЩ ЮЕТЕЪ йОФЕТОЕФ, ТБЪВЙЧБС ОБ НЕОШЫЙЕ РБЛЕФЩ, Ч УМХЮБЕ ОЕПВИПДЙНПУФЙ. пО ЗБТБОФЙТХЕФ ФПМШЛП ДПУФБЧЛХ "МХЮЫЕЗП ХУЙМЙС", ФБЛ ЮФП РБЛЕФЩ НПЗХФ ВЩФШ РПФЕТСОЩ ЙМЙ РЕТЕХРПТСДПЮЕОЩ ЧП ЧТЕНС ФТБОУРПТФЙТПЧЛЙ. лБЦДЩК ЛПНРШАФЕТ ЙНЕЕФ IP БДТЕУ. рТПФПЛПМ ХРТБЧМЕОЙС РЕТЕДБЮЕК ( TCP ), ЛПФПТЩК УМЕДХЕФ ЪБ IP РТПФПЛПМПН, ПВЕУРЕЮЙЧБЕФ ОБДЕЦОПЕ РПДЛМАЮЕОЙЕ. ьФП РПЪЧПМСЕФ ХУФБОПЧЙФШ НЕЦДХ ЛПНРШАФЕТБНЙ УПЕДЙОЕОЙЕ, ОБРПДПВЙЕ ФЕМЕЖПООПЗП Й ЗБТБОФЙТХЕФ ДПУФБЧЛХ ДБООЩИ Ч РБТЧЙМШОПН РПТСДЛЕ.

йОФЕТОЕФ БДТЕУ УПЛЕФБ УПУФПЙФ ЙЪ ДЧХИ ЮБУФЕК: ОПНЕТБ ЛПНРШАФЕТБ Й ОПНЕТБ РПТФБ. ьФБ ЙОЖПТНБГЙС ИТБОЙФУС Ч РЕТЕНЕООПК УФТХЛФХТЩ sockaddr_in . дМС ЙДЕОФЙЖЙЛБГЙЙ ФПЗП, ЮФП ЬФП БДТЕУ йОФЕТОЕФ РТПУФТБОУФЧБ ЙНЕО, ОЕПВИПДЙНП ХУФБОПЧЙФШ РПМЕ sin_family Ч AF_INET . ч РПМЕ Sin_addr ИТБОЙФУС йОФЕТОЕФ БДТЕУ ЛПНРШАФЕТБ, ЛБЛ 32-ТБЪТСДОПЕ ГЕМПЕ ЮЙУМП IP . лБЦДПНХ УПЛЕФХ ОБ ПДОПН ЛПНРШАФЕТЕ РТЙУЧБЙЧБЕФУС ОПНЕТ РПТФБ. рПУЛПМШЛХ ТБЪМЙЮОЩЕ НБЫЙОЩ УПИТБОСАФ НОПЗПВБКФПЧЩЕ ЪОБЮЕОЙС Ч ТБЪМЙЮОПН РПТСДЛЕ ВБКФБ, ЙУРПМШЪХАФ htons , ЮФПВЩ РТЕПВТБЪПЧБФШ ЮЙУМП РПТФБ Л УЕФЕЧПНХ РПТСДЛХ ВБКФПЧ.

лПНБОДБ gethostbyname РТЕПВТБЪПЧЩЧБЕФ ХДПВПЮЙФБЕНЩЕ ЙНЕОБ ИПУФБ, ЮЙУМБ УП УФБОДБТФОПК ФПЮЕЮОПК ОПФБГЙЕК (ФЙРБ 10.0.0.1) ЙМЙ DNS ЙНЕОБ (ФБЛЙЕ ЛБЛ www.codesourcery.com) Ч 32-ТБЪТСДОЩЕ IP БДТЕУБ. ч ЛБЮЕУФЧЕ ТЕЪХМШФБФБ ЧПЪЧТБЭБЕФУС ХЛБЪБФЕМШ ОБ УФТХЛФХТХ struct hostent ; Ч РПМЕ h_addr ИТБОЙФУС IP БДТЕУ ЗМБЧОПЗП ЛПНРШАФЕТБ.

мЙУФЙОЗ 5.12 ЙММАУФТЙТХЕФ ЙУРПМШЪПЧБОЙЕ Internet-domain УПЛЕФПЧ. рТПЗТБННБ РПМХЮБЕФ ДПНБЫОАА УФТБОЙГХ ПФ Web УЕТЧЕТБ, ЙНС ИПУФБ ЛПФПТПЗП ПРТЕДЕМЕОП Ч ЛПНБОДОПК УФТПЛЕ.

йНС ИПУФБ Web УЕТЧЕТБ ЪБДБЕФУС Ч ЛПНБОДОП УФТПЛЕ (ВЕЪ "http: //"). лПНБОДБ gethostbyname РТЕПВТБЪПЧЩЧБЕФ ЙНС ИПУФБ Ч ЮЙУМПЧПК IP БДТЕУ Й ЪБФЕН РПДЛМАЮБЕФ РПФПЛ (TCP) УПЛЕФБ Л РПТФХ 80 ОБ ЗМБЧОПН ЛПНРШАФЕТЕ. уЕТЧЕТЩ ЙУРПМШЪХАФ зЙРЕТФЕЛУФПЧЩК фТБОУРПТФОЩК рТПФПЛПМ ( HTTP ), РПЬФПНХ РЕТЕДБЕФУС ЛПНБОДБ HTTP GET , УЕТЧЕТ Ч ЛБЮЕУФЧЕ ПФЧЕФБ РЕТЕДБЕФ ФЕЛУФ ДПНБЫОЕК УФТБОЙГЩ.

дМС ПФПВТБЦЕОЙС УФТБОЙГЩ www.codesourcery.com, ОЕПВИПДЙНП ЪБДБФШ УМЕДХАЭХЕ ЛПНБОДХ

рБТЩ УПЛЕФПЧ

лБЛ ХРПНЙОБМПУШ ТБОЕЕ, ЖХОЛГЙС pipe , УПЪДБЕФ ДЧБ ДЕУЛТЙРФПТБ ЖБКМПЧ ДМС ОБЮБМБ Й ЛПОГБ ЛБОБМБ. лБОБМЩ ПЗТБОЙЮЕОЩ, РПФПНХ ЮФП ДЕУЛТЙРФПТЩ ЖБКМПЧ ЙУРПМШЪХАФУС ФПМШЛП УЧСЪБООЩНЙ РТПГЕУУБНЙ Й РПФПНХ ЮФП ЧЪБЙНПДЕКУФЧЙЕ ПДОПОБРТБЧМЕОП. жХОЛГЙС socketpair УПЪДБЕФ ДЧБ ДЕУЛТЙРФПТБ ЖБКМПЧ ДМС ДЧХИ УПЛЕФПЧ, РПДЛМАЮЕООЩИ ОБ ПДОПН ЛПНРШАФЕТЕ. ьФЙ ДЕУЛТЙРФПТЩ ЖБКМПЧ ТБЪТЕЫБАФ ДЧХИУФПТПООЕЕ ЧЪБЙНПДЕКУФЧЙЕ ДЧХИ УЧСЪБООЩИ РТПГЕУУПЧ. рЕТЧЩЕ ФТЙ РБТБНЕФТБ ЛПНБОДЩ — ЙДЕОФЙЮОЩ РБТБНЕФТБН ЛПНБОДЩ socket : ПОЙ ПРТЕДЕМСАФ ДПНЕО, УФЙМШ РПДЛМАЮЕОЙС Й РТПФПЛПМ. рПУМЕДОЙК РБТБНЕФТ — НБУУЙЧ У ДЧХНС ГЕМЩНЙ ЮЙУМБНЙ, Ч ЛПФПТПН ИТБОСФУС ИБТБЛФЕТЙУФЙЛЙ ЖБКМПЧ ЬФЙИ ДЧХИ УПЛЕФПЧ. рТЙ ЙУРПМШЪПЧБОЙЙ ЛПНБОДЩ socketpair , ОЕПВИПДЙНП ПРТЕДЕМЙФШ PF_LOCAL ЛБЛ РТПУФТБОУФЧП ЙНЕО.

Ссылка на основную публикацию
Снять пароль с роутера tp link
Домашняя беспроводная сеть Wi-Fi должна быть защищена паролем. Но ведь бывают разные случаи, скажете вы. Например, вы хотите пригласить друзей...
Скопировать контакты с андроид на компьютер
Мы уже рассказывали о том, как скопировать контакты со смартфона на смартфон. Но иногда проще перебросить контактную книгу на компьютер....
Скопировать строку таблицы значений 1с в другую
Не претендуя на полноту описания функций и методов работы с таблицей значений 1с привожу некоторые аспекты, которые в своё время...
Снять пароль с макроса excel
Здравствуйте, друзья! Последние дни бился над такой задачей: Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается...
Adblock detector