ВУЗ:
Составители:
Рубрика:
46
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
Поле
sin_family
определяет тип адреса. Следует записать в это поле значе-
ние
AF_INET
, которое соответствует типу адреса, принятому в InterNet
(структура
srv_address
имеет тип
SOCKADDR_IN
):
srv_address.sin_family = AF_INET;
Поле
sin_port
определяет номер порта, который будет использоваться для
передачи данных. Порт - это просто идентификатор программы, выполняю-
щей обмен по сети. На одном узле может одновременно работать несколько
программ, использующих разные порты.
Особенностью поля
sin_port
является использование так называемого се-
тевого формата данных. Этот формат отличается от того, что принят в про-
цессорах с архитектурой Intel, а именно - младшие байты данных хранятся по
старшим адресам памяти (архитектура процессоров Intel подразумевает хра-
нение старших байтов данных по младшим адресам).
Cетевой формат данных удобен при организации глобальных сетей,
так как
в узлах такой сети могут использоваться компьютеры с различной архитек-
турой.
Для выполнения преобразований из обычного формата в сетевой и обратно
в интерфейсе
Windows Socket
предусмотрен специальный набор функций. В
частности, для заполнения поля
sin_port
нужно использовать функцию
htons
,
выполняющую преобразование 16-разрядных данных из формата Intel в сете-
вой формат.
Ниже показан пример инициализации поля
sin_port
#define SERV_PORT 5000
srv_address.sin_port = htons(SERV_PORT);
Поле
sin_addr
структуры
sockaddr_in
представляет собой структуру
in_addr
struct in_addr
{
union
{
struct { u_char s_b1, s_b2, s_b3, s_b4; } S_un_b;
struct { u_short s_w1, s_w2; } S_un_w;
u_long S_addr;
S_un;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
Поле sin_family определяет тип адреса. Следует записать в это поле значе-
ние AF_INET, которое соответствует типу адреса, принятому в InterNet
(структура srv_address имеет тип SOCKADDR_IN):
srv_address.sin_family = AF_INET;
Поле sin_port определяет номер порта, который будет использоваться для
передачи данных. Порт - это просто идентификатор программы, выполняю-
щей обмен по сети. На одном узле может одновременно работать несколько
программ, использующих разные порты.
Особенностью поля sin_port является использование так называемого се-
тевого формата данных. Этот формат отличается от того, что принят в про-
цессорах с архитектурой Intel, а именно - младшие байты данных хранятся по
старшим адресам памяти (архитектура процессоров Intel подразумевает хра-
нение старших байтов данных по младшим адресам).
Cетевой формат данных удобен при организации глобальных сетей, так как
в узлах такой сети могут использоваться компьютеры с различной архитек-
турой.
Для выполнения преобразований из обычного формата в сетевой и обратно
в интерфейсе Windows Socket предусмотрен специальный набор функций. В
частности, для заполнения поля sin_port нужно использовать функцию htons,
выполняющую преобразование 16-разрядных данных из формата Intel в сете-
вой формат.
Ниже показан пример инициализации поля sin_port
#define SERV_PORT 5000
srv_address.sin_port = htons(SERV_PORT);
Поле sin_addr структуры sockaddr_in представляет собой структуру in_addr
struct in_addr
{
union
{
struct { u_char s_b1, s_b2, s_b3, s_b4; } S_un_b;
struct { u_short s_w1, s_w2; } S_un_w;
u_long S_addr;
S_un;
46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »
