Michael J. Donahoo "TCP/IP Sockets in C, 2nd Edition" / Michael J. Donahoo "Программирование TCP/IP сокетов в Си, 2-ое издание"

→Because the Sockets API is generic, the pointer to the sockaddr_in address structure (which is specific to
IPv4 addresses) needs to be cast to the generic type (sockaddr∗), and the actual size of
the address data structure must be supplied.
0 Поскольку Sockets API является общим, указатель на структуру адреса sockaddr_in (которая является специфичной для IPv4) должен быть преобразован к общему типу (sockaddr *). Кроме того, функции должен быть предоставлен фактический размер структуры с данными адреса.
→The connect() function establishes a connection between the given socket and the one
identified by the address and port in the sockaddr_in structure.
0 Функция connect() устанавливает соединение между нашим сокетом и сокетом, определённым с помощью адреса и порта внутри структуры sockaddr_in.
→The call to memset() ensures that any parts of the structure that we do not explicitly set contain zero.
1 Вызов функции memset() гарантирует, что любая составляющая структуры, значение которой мы не присвоили явно, содержит ноль.
→If socket fails, it returns –1, and we call our error-handling function, DieWithSystemMessage() (described later), to
print an informative hint and exit.
0 В случае неудачи socket() возвращает -1 и мы вызываем нашу функцию для обработки ошибок - DieWithSystemMessage(), описываемую ниже - чтобы вывести информативную подсказку и завершить работу программы.
→The socket is for IPv4 (af_inet) using the stream-based protocol (sock_stream) called TCP (ipproto_tcp). socket() returns an
integer-valued descriptor or “handle” for the socket if successful.
0 В качестве параметров при создании мы указываем, что создаем сокет для IPv4 (AF_INET), использующий потоковый протокол (SOCK_STREAM), называемый TCP (IPPROTO_TCP). В случае успешного выполнения функция socket() возвращает целочисленный дескриптор или "хэндл" для созданного сокета.
→We create a socket using the socket() function.
0 Мы создаем сокет с помощью функции socket().
→2. TCP socket creation: lines 23–26
0 2. Создание TCP сокета: строки 23-26
→If no port is provided, the client uses the well-known echo protocol port, 7.
0 Если порт не указывается, клиент использует общепринятый номер порта для эхо-сервиса - 7.
→Optionally, the client takes the server port as the third parameter.
0 Третьим параметром клиенту можно сообщить порт сервера, но это необязательно.
→The IPv4 address and string to echo are passed in as the first two parameters.
0 IPv4 адрес и текстовая строка для отправки эхо-сервису передаются в качестве первых двух параметров.
→￿ Typical parameter parsing and sanity checking: lines 13–21
0 · Разбор символьных параметров и проверка на здравый смысл: строки 13-21
→We utilize our own include file, Practical.h,
with prototypes for our own functions, which we describe below.
0 Мы используем наш собственный заголовочный файл Practical.h с прототипами созданных нами функций, которые мы опишем ниже.
→These header files declare the standard functions and constants of the API. Consult
your documentation (e.g., man pages) for the appropriate include files for socket func-
tions and data structures on your system.
0 Данные заголовочные файлы содержат объявления стандартных функций и констант API. Обратитесь к документации (например, с помощью команды man) для определения соответствующих вашей системе включаемых файлов с функциями сокетов и структурами данных.
→￿ Include files: lines 1–9
0 · Включение файлов: строки 1-9
→1. Application setup and parameter parsing: lines 1–21
0 1. Настройка приложения и разбор параметров: строки 1-21
→Its job is to initiate communication with a server that is passively waiting to be contacted.
0 Его работа состоит в том, чтобы установить соединение с пассивно ожидающим контакта сервером.
→The distinction between client and server is important because each uses the sockets interface
differently at certain steps in the communication. We first focus on the client.
0 Между клиентом и сервером существует важное отличие - на определенных этапах процесса передачи информации они по-разному используют интерфейс сокетов. Сначала мы рассмотрим клиент.
→A related class contains the link-local, or “autoconfiguration” addresses. For IPv4, such
addresses begin with 169.254. For IPv6, any address whose first 16-bit chunk is FE80, FE90,
FEA0, or FEB0 is a link-local address. These addresses can only be used for communication
between hosts connected to the same network; routers will not forward packets that have such
addresses as their destination.
0 Родственный классу частных адресов класс канальных адресов содержит адреса для автоматического конфигурирования. Для IPv4 это адреса, начинающиеся с 169.254, а для IPv6 - любые адреса, начальной 16-битовой частью которых является FE80, FE90, FEA0 или FEB0. Данные адреса могут использоваться для связи только между хостами одной сети и маршрутизаторы не будут пересылать пакеты, предназначенные для таких адресов.
→The importance of these addresses is that they cannot be reached from the
global Internet. If you are trying out the code in this book on a machine that has an address
in the private-use class (e.g., on your home network), and you are trying to communicate
with another host that does not have one of these addresses, in general you will not suc-
ceed unless the host with the private address initiates communication—and even then you
may fail.
0 Значение данных адресов, зарезервированных для частного использования, в том, что они недоступны из глобальной сети Интернет. Если в дальнейшем вы решите опробовать приведенной в этой книге код на машине, имеющей адрес такого класса (например, внутри вашей домашней сети), и попытаетесь связаться с другим хостом, не имеющим подобного адреса, скорее всего, вы потерпите неудачу. Разве что в том случае, если соединение устанавливает хост с частным адресом, у вас есть некоторый шанс на успех.
→Such a device acts like a router that translates (rewrites) the addresses and
ports in packets as it forwards them. More precisely, it maps (private address, port) pairs in
packets on one of its interfaces to (public address, port) pairs on the other interface. This
enables a small group of hosts (e.g., those on a home network) to effectively “share” a sin-
gle IP address.
0 Подобные механизмы действуют как маршрутизатор, преобразовывая (переписывая) адреса и порты в пакетах и пересылая их. Если быть более точным, NAT создает соответствие между парами "персональный адрес - порт" на одном своем интерфейсе и "публичный адрес - порт" на другом. Это позволяет небольшим группам хостов (например, состоящим в домашней сети) совместно использовать единственный публичный IP-адрес.
Резюме
Пол:
мужчина
Родной язык:
русский
С нами:
с 12 октября 2009 г. (6215 дней)
Не является членом клуба.
Деятельность:
39 версий перевода с общим рейтингом 7
5 комментариев
Карма: 2 (оценок: 2)
Написать Ostrolist личное сообщение