В настоящее время я пытаюсь выяснить ip, порт и тип транспорта сокета inet / inet6 в C.
Проблема в том, что я получил сокет fd, как
int s = socket( ... );
bind(s, soa, soa_len);
Теперь я получил s
и хочу узнать, к какому транспорту / интерфейсу / порту он привязан.
Интерфейс и порт достаточно просты через
struct sockaddr_storage sa = {};:w
getsockname(s, (struct sockaddr*) &sa, sizeof(sa));
/* parse the fields of sa depending on sa.sa_family */
Однако я не могу найти способ выяснить, является ли s
сокетом TCP или UDP - однако он должен быть каким-то образом связан - так:
Как я могу узнать, какой транспортный протокол s
использует?