Это команда getsockname, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
getpeername - получить информацию о том или ином конце соединения сокета
сетевые трубы 4.2
СИНТАКСИС
getpeername [ -подробный ] [ -носок ] [ fd ]
getsockname [ -подробный ] [ -вглядеться ] [ fd ]
ОПИСАНИЕ
Это страница руководства для системного вызова getpeername. Эта страница руководства находится в
раздел 2. Вы можете получить к нему доступ, используя команду типа "man 2 getpeername" или "man -s 2".
getpeername ". Прошу прощения за недоразумение.
getpeername выполняет getpeername(2) системный вызов одного из указанных файловых дескрипторов
by fd и распечатывает результаты. По умолчанию fd равно 0 (стандартный ввод). Вы можете вызвать getpeername
вести себя как getsockname предоставив аргумент -sock.
getsockname выполняет getsockname(2) системный вызов одного из указанных файловых дескрипторов
by fd и распечатывает результаты. По умолчанию fd равно 0 (стандартный ввод). Вы можете вызвать getsockname
вести себя как getpeername предоставив аргумент -peer.
Существует строгое ограничение getpeername. Если удаленный процесс закрыл
соединение, getpeername завершится ошибкой "Сокет не подключен". Это будет
происходят с ужасающей частотой, когда удаленный процесс не зависит от локального
процесс для ввода, и он отправляет только небольшое количество вывода перед закрытием
связь. Надеюсь, практическое использование getpeername (если есть) не будет
решить эту проблему.
Вы можете использовать getpeername узнать адрес противоположного конца розетки. Вы можете
использование getsockname чтобы узнать адрес локального конца сокета. Они на самом деле
одна и та же программа с разными названиями. Мы будем называть их обоих по имени
getpeername в следующем описании.
getpeername умеет отображать одноранговую информацию о UNIX и Интернет-сокетах. если ты
попробуйте использовать его на сокете другого типа, он потерпит неудачу с "неизвестным семейством адресов"
ошибка. Если вы регулярно имеете дело со странными розетками и желаете getpeername работать с ними,
пришлите мне электронное письмо.
Если сокет является сокетом домена UNIX, тогда getpeername печатает имя файла (которое
это порт) в одной строке. Если -подробный было указано, getpeername печатает больше
подробный отчет, состоящий из слова `Unix 'в первой строке, слова` Port' в
во второй строке и имя файла в третьей строке.
Если сокет - это интернет-сокет, то getpeername печатает номер порта на первом
строка и числовой адрес во второй строке. Если -подробный было указано, getpeername
печатает более подробный отчет, состоящий из слова «Интернет» в первой строке,
слово «Порт» во второй строке, номер порта в третьей строке, слово «Хост» в
четвертая линия. Начиная с пятой строки печатаются все числовые интернет-адреса.
вернулся gethostbyaddr(3) библиотечная процедура. В остальных строках печатаются все
имена хостов.
ПАСХА EGG
Если вы укажете -подробный дважды программа напечатает уведомление об авторских правах.
ПРИМЕРЫ
Я изначально проектировал getpeername чтобы созданный сборщиком сценарий оболочки мог узнать, кто
разговаривал с ним (и, возможно, выполнял контроль доступа). Я добавил getsockname для
полнота. Теперь я понимаю, что getsockname полезно для сервисов множественной адресации.
Однако большая часть программного обеспечения, в котором вы хотите разобраться с множественной адресацией (httpd, ftpd), уже
способен на это, и намного эффективнее, чем оболочка скрипта. Тем не менее, это может
когда-нибудь пригодится.
клиент $ шланг mail.cise.ufl.edu smtp --in ./getpeername
25
128.227.205.210
Вы подключились к mail.cis.ufl.edu через порт SMTP (порт 25). Для подробного отчета:
клиент $ шланг mail.cise.ufl.edu smtp --in ./getpeername -v
Интернет
порт
25
Хозяин
128.227.205.210
fireant.cite.ufl.edu
Теперь давайте приведем пример состояния гонки, которое вызовет getpeername потерпеть неудачу:
client $ шланг web.cise.ufl.edu 80 -in ./getpeername
./getpeername: ошибка getpeername на дескрипторе 0: сокет не подключен
Демон HTTP пытается прочитать запрос, обнаруживает, что половина полнодуплексного соединения
закрыто (из-за особого поведения опции -in на шланг(1)) и разрывает соединение
до getpeername может запросить дескриптор файла. Мы можем заставить HTTP-демон ждать
для нас, оставив обе половины дуплексного соединения открытыми.
клиент $ шланг web.cise.ufl.edu 80 -fd0 ./getpeername -v
Интернет
порт
80
Хозяин
128.227.205.206
наводнение.cise.ufl.edu
И, наконец, извлечем полезную информацию из нашего сокета.
client $ шланг web.cise.ufl.edu 80 -fd0 sh -c "./getpeername -v | \
хвост +5 | egrep -v '^ [0-9.] * $' | голова -1 "
наводнение.cise.ufl.edu
ОШИБКИ
Розетка операция on без розетки Команда fd указанный вами не относится к сокету или относится
к сокету, который был закрыт. Это происходит, когда вы бежите getpeername сам по себе (это
маловероятно, что какой-либо из файловых дескрипторов, прикрепленных к интерактивной оболочке, на самом деле
сокеты), или если вы ошиблись с командой крана / шланга и забыли дубликат(2) один из ваших
дескрипторы, или если удаленному компьютеру удается закрыть соединение до getpeername
мог бежать.
Плохой файл номер Вы указали неправильный номер файла для fd. Если у вас достаточно навыков, чтобы
на самом деле генерировать эту ошибку, вы, вероятно, знаете, что не так.
Если у вас возникнут другие ошибки, сообщите мне.
Используйте getsockname в Интернете с помощью сервисов onworks.net