Ответ
IP-адрес (Internet Protocol address) — это уникальный числовой идентификатор, назначаемый каждому устройству в сети. Он работает на сетевом уровне (L3) и служит для логической адресации и маршрутизации пакетов данных через сложные сети, включая интернет. В отличие от MAC-адреса, который работает только в пределах локального сегмента сети, IP-адрес позволяет находить устройства глобально.
Основные типы и использование в C++:
- IPv4: 32-битный адрес (например,
192.168.1.10). Широко распространен. - IPv6: 128-битный адрес (например,
2001:db8::1). Решает проблему нехватки IPv4-адресов.
При программировании сетевых приложений на C++ (с использованием сокетов Berkeley или библиотек вроде Boost.Asio) мы постоянно работаем с IP-адресами для привязки сокетов и установки соединений.
// Пример: создание TCP-сокета и привязка к конкретному IP-адресу (упрощённо, на основе POSIX-сокетов)
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <cstring>
int create_server_socket(const char* ip_address, uint16_t port) {
int server_fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_port = htons(port);
// Преобразование строки с IP в бинарный формат
inet_pton(AF_INET, ip_address, &address.sin_addr);
// Привязка сокета к IP и порту
bind(server_fd, (struct sockaddr*)&address, sizeof(address));
listen(server_fd, 5);
return server_fd;
}
// Использование: create_server_socket("192.168.1.100", 8080);
Таким образом, IP-адрес — это фундаментальный элемент, позволяющий любому сетевому коду на C++ взаимодействовать с другими устройствами в мире.