Что такое код getprotobyname


getprotobyname — Get protocol number associated with protocol name


getprotobyname() returns the protocol number associated with the protocol name as per /etc/protocols .

Список параметров

The protocol name.

Возвращаемые значения

Returns the protocol number or -1 if the protocol is not found.


Пример #1 getprotobyname() example

Смотрите также

  • getprotobynumber() — Get protocol name associated with protocol number

с getprotobyname получения протоколов информации

Я просто начинаю изучать программирование C и для физических упражнений я нашел эту задачу. Во- первых , я должен сканировать имя протокола. Тогда я должен проверить официальное имя, номер и псевдоним протокола. Так что, если я вхожу ТКТ выход будет выглядеть следующим образом :
официальное название: Tcp
номер прот: 6
псевдонима TCP

Это то, что я получил до сих пор. Когда я запустить его и ввести IP или TCP он не дает мне какие-либо ошибки. Но это говорит о том, что протокол не найден.

Заранее спасибо за вашу помощь.

Здесь name используется и после того, что вы читаете name по

Это тоже неправильно читать массив символов. Требовать %s спецификатор формата для чтения массива символов. Так оно и должно быть

Ваш код должен быть

Вот ошибка: scanf(«%c», name);

Вы просто читаете один единственный символ, передав описатель формата scanf с %c . При этом getprotobyname() возвращается инвалидом, поэтому вы видите печать protocol not found .

Вместо этого вам нужно прочитать всю строку из стандартного ввода с помощью %s .

Что такое код getprotobyname

The getprotobyname function retrieves the protocol information corresponding to a protocol name.



Pointer to a null-terminated protocol name.

Return value

If no error occurs, getprotobyname returns a pointer to the protoent. Otherwise, it returns a null pointer and a specific error number can be retrieved by calling WSAGetLastError.

A successful WSAStartup call must occur before using this function.

The network subsystem has failed.

Authoritative answer protocol not found.

A nonauthoritative protocol not found, or server failure.

Nonrecoverable errors, the protocols database is not accessible.

Valid name, no data record of requested type.

A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.

The name parameter is not a valid part of the user address space.

A blocking Windows Socket 1.1 call was canceled through WSACancelBlockingCall.


The getprotobyname function returns a pointer to the protoent structure containing the name(s) and protocol number that correspond to the protocol specified in the name parameter. All strings are null-terminated. The protoent structure is allocated by the Windows Sockets library. An application must never attempt to modify this structure or to free any of its components. Furthermore, like hostent, only one copy of this structure is allocated per thread, so the application should copy any information that it needs before issuing any other Windows Sockets function calls.

Windows Phone 8: This function is supported for Windows Phone Store apps on Windows Phone 8 and later.

Windows 8.1 and Windows Server 2012 R2: This function is supported for Windows Store apps on Windows 8.1, Windows Server 2012 R2, and later.


Minimum supported client

Windows 8.1, Windows Vista [desktop apps | UWP apps]

Minimum supported server

Windows Server 2003 [desktop apps | UWP apps]

c получение информации о протоколах getprotobyname

Я только начинаю изучать программирование на С и для упражнений я нашел эту задачу. Сначала мне нужно отсканировать имя протокола. Затем я должен проверить официальное имя, номер и псевдоним протокола. Поэтому, если я вхожу в tcp, вывод будет выглядеть так:
официальное название: tcp
прото номер: 6
псевдоним TCP

Это то, что я получил до сих пор. Когда я запускаю его и вводя ip или tcp, он не дает мне никаких ошибок. Но в нем говорится, что протокол не найден.

Что такое код getprotobyname

P5getprotobyname — Implement Perl’s getprotobyname() and associated built-ins

This module tries to mimic the behaviour of the getprotobyname and associated functions of Perl as closely as possible. It exports by default:


Source can be located at: https://github.com/lizmat/P5getprotobyname . Comments and Pull Requests are welcome.


Copyright 2020-2020 Elizabeth Mattijsen

Re-imagined from Perl as part of the CPAN Butterfly Plan.

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.

Winsock2 and Internet Protocol 3 Part 5

What do we have in this chapter 3 part 5?

The getprotobyname() Program Example

The getprotobyport() Program Example

Writing IP Version–Independent Program Example

The Client Example

The getprotobyname() Program Example

The following program example tries to demonstrate the getprotobyname() function. Create a new empty Win32 console mode application and add the project/solution name.

int main( int argc, char **argv)

// Declare and initialize variables

struct protoent *servptr;

if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)

printf( «WSAStartup() failed with error code %ld\n» , WSAGetLastError());

printf( «WSAStartup() looks fine!\n» );

// Traverse the array content.

// Be careful with the array index.

if (servptr == NULL)

printf ( «\ngetprotobyname() — %d failed with error code %ld\n» , protocol[i], WSAGetLastError());

// Print the related info

printf( «getprotobyname() is OK — %s\n» , protocol[i]);

printf( » Official name is %s\n» , servptr->p_name);

printf( » Protocol number is %d\n» , servptr->p_proto);

Build and run the project. The following screenshot shows a sample output.

The getprotobyport() Program Example

The following program example tries to demonstrate the getprotobyport() function.

int main( int argc, char **argv)

// Declare and initialize variables

struct protoent *servptr;

// A sample of protocol numbers

if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)

printf( «WSAStartup() failed with error code %ld\n» , WSAGetLastError());

printf( «WSAStartup() looks fine!\n» );

// Traverse the array content.

// Be careful with the array index.

if (servptr == NULL)

printf ( «getprotobynumber() — %d failed with error code %ld\n» , protocol[i], WSAGetLastError());

// Print the related info

printf( «getprotobynumber() is OK — %d\n» , protocol[i]);

printf( » Official name is %s\n» , servptr->p_name);

printf( » Protocol number is %d\n» , servptr->p_proto);

Build and run the project. The following screenshot shows a sample output.

As discussed previously, if you are curious where those protocol names and numbers are extracted in the local system, the files containing the information are under the %system32/driver/etc folder (Windows XP Pro SP2). You can open those files in text editor.

Writing IP Version–Independent Program Example

In this section, we’ll cover how to develop applications that work seamlessly over IPv4 and IPv6. This method requires using the new name resolution APIs getaddrinfo() and getnameinfo() and requires a bit of rearranging Winsock calls from what you are probably used to.

Before we get into the specifics, let’s cover some of the basic practices that you should follow. First, applications should not allocate the socket address structures specific to each protocol (such as SOCKADDR_IN and SOCKADDR_IN6 for IPv4 and IPv6, respectively) because they can be different sizes. Instead, a new socket address structure SOCKADDR_STORAGE has been introduced that is as large as the largest possible protocol specific address structure and includes padding for 64-bit alignment issues. The following code uses a SOCKADDR_STORAGE structure to store the destination IPv6 address.



addrlen = sizeof (saDestination);

if (rc == SOCKET_ERROR)

if (rc == SOCKET_ERROR)

Second, functions that take an address as a parameter should pass the entire socket address structure and not the protocol specific types like struct in_addr or struct in6_addr. This is important for IPv6, which might require the scope ID information to successfully connect. The SOCKADDR_STORAGE structure containing the address should be passed instead.

Third, avoid hardcode addresses regardless of whether they are IPv4 or IPv6. The Winsock header files define constants for all the address that are hard coded such as the loopback address and the wildcard address used for binding.

Now that some of the basic issues are out of the way, let’s move to discussing how an application should be structured to be IP independent. We will divide our discussion into two sections: the client and the server.

The Client Example

For both TCP and UDP clients, the application typically possesses the server (or recipient’s) IP address or hostname. Whether it resolves to an IPv4 address or IPv6 address doesn’t matter. The client should follow these three steps:

  1. Resolve the address using the getaddrinfo() function. The hints should contain AF_UNSPEC as well as the socket type and protocol depending on whether the client uses TCP or UDP to communicate.
  2. Create the socket using the ai_family, ai_socktype, and ai_protocol fields from the addrinfo structure returned in step 1.
  3. Call connect() or sendto() with the ai_addr member of the addrinfo structure.

The following code sample illustrates these principles.

struct addrinfo hints, *res=NULL;

char *szRemoteAddress=NULL, *szRemotePort=NULL;

// Parse the command line to obtain the remote server’s

// hostname or address along with the port number, which are contained

// in szRemoteAddress and szRemotePort.

// first resolve assuming string is a string literal address

rc = getaddrinfo(szRemoteAddress, szRemotePort, &hints, &res);

if (rc == WSANO_DATA)

// Unable to resolve name — bail out

s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);


rc = connect(s, res->ai_addr, res->ai_addrlen);

Что такое код getprotobyname

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

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

При создании сообщения в этой теме, пожалуйста, придерживайтесь следующих правил:
1. Спокойно и подробно опишите ваш вопрос или проблему. Старайтесь писать грамотно.
2. Обязательно укажите модель вашего устройства и версию OS Android.
3. Укажите, какие действия вы производили до получения(при решении) вопроса(проблемы). Какие приложения/программы использовались.
4. Если вы хотите добавить изображение ,пожалуйста, прочитайте Как убирать изображения под спойлер.

Соблюдая эти простые правила, вы быстрее получите интересующий вас ответ.

С высокой долей вероятности, ответ на этот вопрос содержится в разделе Android — Прошивки
Если на форуме не опубликован проверенный способ получения root-прав на Ваш аппарат, или такие способы по каким-либо причинам не работают у Вас, тогда Вы можете на свой страх и риск попробовать универсальные способы:

Если у Вас будут возникать вопросы по указанным методам, или что-то будет не получаться с ними, то задавайте вопросы в темах про конкретный метод.

Поскольку изначальный путь к получению root на большинстве телефонов лежал через терминальную сессию, запускаемую по команде «adb shell», то самый верный способ, по-моему, таков:
а) Убедиться, что включена отладка USB (USB debugging): «НастройкаПриложенияРазработкаОтладка USB»;
б) подключить телефон к ББ и выполнить в командной строке «adb shell» [Enter];
в) если системное приглашение выглядит как «#», то пропускаем п. «г» и идём в п. «д»;
г) если системное приглашение выглядит как «$», то в командной строке набираем «su»[Enter]. После этого системное приглашение должно измениться на «#». Не поменялось — пробуем «/system/bin/su», «/system/sbin/su» или же «/system/xbin/su». Если по прежнему видите -«$», то root-прав у Вас, скорее всего, нет;
д) набираем в командной строке «/system/bin/ >
Аналогичную проверку можно выполнить через программу-эмулятор терминала, которую надо запускать (предварительно установив, если её нет) на телефоне. Запустив, действовать начинаем с п.»в». Существенное отличие в том, что при выполнении п.»г» может появиться запрос на повышение привилегий. А может и не появиться. Если появился — отвечаем «Разрешить». Приглашение должно смениться на «#». Если запрос не появился, то тут два варианта: либо программа «Superuser» уже установлена, либо нет. Если Вы видите ответ системы «permission denied» (в разрешении отказано), то программа «Superuser» не установлена. Устанавливаем её. Если она не устанавливается (или же устанавливается, но полноценно не функционирует) — root в телефоне отсутствует. Занавес.

Если программа «Superuser» уже была установлена ранее, то тут также возможны два варианта: эмулятору терминала разрешено работать с правами root или же наоборот, запрещено. Если разрешено, то мы незамедлительно должны увидеть желанный символ «#». Если запрещено — запускаем «Superuser» и снимаем запрет, удалив запись о нашем терминале. Возвращаемся в терминал и повторяем «su»[Enter], ждём запрос на повышение привилегий, разрешаем повышение, видим «#». Дрожащими руками набираем в терминале «id»[Enter]. Анализируем это.

Для удаления софта, зашитого в телефон, можно использовать следующие программы:

Root Manager — в нем есть раздел System Apps, в котором, в свою очередь, три пункта: App Remover — собственно удаление приложений, Data Remover — удаление связанных с программами данных, и App Backup/Restore — резервное копирование и восстановление приложений. По отзывам, бэкап работает довольно криво, поэтому рекомендуется использовать сторонний софт типа Titanium Backup
NB: для полного удаления программы нужно удалить файлы program.apk и program.odex

® SystemApp Remover — также программа, предназначенная для удаления системных приложений. По отзывам в ветке программы, почти ни у кого не работает, поэтому здесь приведена скорее как пример.

Так же и саму программу Titanium Backup можно использовать для удаления программ. При тапе на строчку с названием удаляемого приложения появится окно, предлагающее создать/восстановить резервную копию, удалить копию, удалить данные и само приложение. Все системные приложения выделены красным цветом.

Учтите , что сервисы Google (программы, в названии которых фигурирует google), штатные контакты, сообщения, лончер удалять и перемещать на карту ни в коем случае не рекомендуется во избежание потери нервных клеток и появления седых волос при окирпичивании зверька!

Запомните! Перед тем, как что-то удалить, ОБЯЗАТЕЛЬНО! ОБЯЗАТЕЛЬНО! ОБЯЗАТЕЛЬНО! делайте бэкап!

®UMS Enabler(Universal) — Приложение для подключения Mass Storage Mode для установки карты памяти в качестве USB — накопителя(проверено Куратором)
®suhide — Утилита suhide позволяет скрыть наличие «ROOT» на Android-устройстве.
SuperSU — Расширенное управление доступом к правам суперпользователя приложениям на устройстве, которым необходим root.
Root Explorer — Файловый менеджер для Root пользователей. Большинство инструкций написано в расчете на использование этого файлового менеджера.
Titanium Backup — Бэкап приложений и пользовательских данных (sms/mms/контакты). Очень часто встречается во всевозможных инструкциях.
LuckyPatcher-Патчер к большинству программ и игр.
Xposed-Программа для изменения настроек приложений и прошивок без необходимости их декомпиляции, компиляции и подписи.
Link2SD-Позволяет переносить установленные приложения на карту памяти при отсутствии такой возможности в прошивке.
FolderMount-Монтирование директорий c внутренней памяти на внешнюю. Служит для переноса кэша игр(обычно) на SD карту.
Android Terminal Emulator-Эмулятор терминала. Добавить нечего.
DroidWall — Программа разрешает неограниченный доступ приложений в интернет по WiFi и ограничивает доступ по GPRS/EDGE/3G
NextApp SDFix — Устранение проблем записи на внешнюю SD-карту в Android 4.4+
AdAway — Блокировщик рекламы с поддержкой белых и чёрных списков.
SU File Manager & Terminal — Файловый менеджер и терминал для Root пользователей
SetCPU — Программа для управления частотой процессора (вся ответственность за использование лежит на вас!)
Autostarts — Покажет, какие программы запускаются автоматически после загрузки, а также другие системные события, происходящие в фоне
CacheMate — Очистка кэша данных у приложений
Root Manager — Набор инструментов для Root пользователя
ShootMe — Снятие скриншотов встряхиванием (в каталоге есть и аналоги)
Wi-Fi Tether — Устройство как точка доступа (в каталоге есть и аналоги)
AdFree Android — Удаляет рекламу в браузере и других приложениях.
AROMA Filemanager — Файлменеджер с доступом к системным файлам из кастомного Recovery.
Nandroid Manager — Программа позволяет просматривать, изучать и редактировать свои Nandroid-бэкапы.

Это не полный перечень программ, работающих с root-правами. Все эти программы (и не только они) есть в Каталоге программ для Android OS. Если Вы не нашли какую-либо программу в данном списке или Каталоге, то вопросы «Подскажите программу, которая. » задаются в теме: ПОИСК программ для Android OS.
Внимание! Если Вы знаете полезную программу, отсутствующую в списке, обратитесь к Куратору .




Функция getprotobyname () возвращает структуру protoent элемента избазы данных, который совпадает с именем протокола name . При необходимостибудет открыто подключение к базе.

Функция getprotobynumber () возвращает структуру protoent элемента избазы данных, который совпадает с номером протокола number . Принеобходимости будет открыто подключение к базе.

Функция setprotoent () открывает соединение к базе и устанавливаетследующую запись к первой записи. Если stayopen не равен нулю, топодключение к базе между вызовами нескольких функций getproto* () не будетзакрыто.

Функция endprotoent () закрывает подключение к базе.

Структура protoent определена в таким образом:

struct protoent <
char *p_name; /* официальное имя протокола */
char **p_aliases; /* список псевдонимов */
int p_proto; /* номер протокола */>

Члены структуры protoent : p_name Официальное название протокола. p_aliases Список альтернативных имён протокола, завершающийся NULL. p_proto Номер протокола.




Описание терминов данного раздела смотрите в attributes (7).
Error code Meaning
Интерфейс Атрибут Значение
getprotoent () Безвредность в нитях MT-Unsafe race:protoent
race:protoentbuf locale
getprotobyname () Безвредность в нитях MT-Unsafe race:protobyname
getprotobynumber () Безвредность в нитях MT-Unsafe race:protobynumber
setprotoent (),
endprotoent ()
Безвредность в нитях MT-Unsafe race:protoent

В приведённой выше таблице protoent в race:protoent означает, что еслив нескольких нитях программы одновременно используются функции setprotoent (), getprotoent () или endprotoent (), то может возникнутьсостязательность по данным.


Php функции

Php скрипты


getprotobyname — Get protocol number associated with protocol name


int getprotobyname ( string name )

getprotobyname() returns the protocol number associated with the protocol name as per /etc/protocols.

Пример 1. getprotobyname() example

$protocol = ‘tcp’ ;
$get_prot = getprotobyname ( $protocol );
if ( $get_prot == — 1 ) <
// if nothing found, returns -1
echo ‘Invalid Protocol’ ;
> else <
echo ‘Protocol #’ . $get_prot ;

User Contributed Notes

There are no user contributed notes for this page

getprotobyname хозяина

Я столкнулся с небольшим тупиком в своем проекте. Мне нужно получить поддерживаемые протоколы любого устройства (с ядром linux) в сети. Я знаю, что метод getprotobyname выполняет эту работу, но с моими текущими знаниями я только успел реализовать ее, чтобы получить информацию о протоколе локального компьютера, на котором работает код. Код выглядит следующим образом,

Мой запрос как можно реализовать это решение, в котором я мог бы разбирать IP-адрес целевого устройства таким образом, чтобы getprotobyname мог попытаться определить протоколы целевых устройств. Любой фрагмент кода или эталонный код очень ценится. Решение это заняло бы большой вес с моих плеч и еще раз спасибо :)


Есть альтернативные методы для выполнения моего требования также будет очень полезно :)

Создан 28 мар. 14 2014-03-28 16:03:49 Hasitha Shan

1 ответ

Короче говоря: вы не может.

getprotocolbyname() просто извлекает статическую информацию из локального (/ etc/protocols) текстового файла (имена протоколов, идентификатор протокола IP-протокола, . ) и предназначен для сопоставления номеров с информацией, доступной для чтения человеком.

Тот факт, что любой протокол появляется в этом файле, вовсе не означает, что он поддерживается локальной машиной. Это очень похоже на, например,/etc/services, который соответствует номерам портов для имен служб. Если в файле появляется служба, это не означает, что машина предлагает эту услугу.

Создан 28 мар. 14 2014-03-28 16:16:56 mfro

Благодарим вас за это, сэр. Есть ли способ, которым я мог бы выполнить свое требование? – Hasitha Shan 28 мар. 14 2014-03-28 16:21:21

Реестра нет, к сожалению, как и в RPC. Единственный способ, которым вы могли бы попытаться найти нужную вам информацию, — это сканировать каждый порт, но (а) это медленно, (б) это ужасная вещь, которую нужно сделать с чужой машиной, и (с) только потому, что вы подключились к правый порт не означает, что он отвечает на правильный протокол. В качестве примера экстремума BitTorrent использует серверы «трекера», чтобы помочь людям найти друг друга, в основном публичные реестры. – John C 28 мар. 14 2014-03-28 17:55:58

Илон Маск рекомендует:  Первая программа
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL