ВУЗ:
Составители:
Рубрика:
- 45 -
няющей обмен по сети. На одном узле может одновременно работать не-
сколько программ, использующих разные порты.
Особенностью поля sin_port является использование так называемого
сетевого формата данных. Этот формат отличается от того, что принят в
процессорах с архитектурой Intel, а именно - младшие байты данных хранят-
ся по старшим адресам памяти (архитектура
процессоров Intel подразумевает
хранение старших байтов данных по младшим адресам).
Cетевой формат данных удобен при организации глобальных сетей, так
как в узлах такой сети могут использоваться компьютеры с различной архи-
тектурой.
Для выполнения преобразований из обычного формата в сетевой и об-
ратно в интерфейсе Windows Socket предусмотрен специальный набор
функций. В
частности, для заполнения поля sin_port нужно использовать
функцию htons, выполняющую преобразование 16-разрядных данных из
формата Intel в сетевой формат.
Ниже показано, как инициализируется поле sin_port в приложении
SERVER, полностью описанном в [13]
#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;
}
} ;
#define s_addr S_un.S_addr;
#define s_host S_un.S_un_b.s_b2;
#define s_net S_un.S_un_b.s_b1;
#define s_imp S_un.S_un_w.s_w2;
#define s_impno S_un.S_un_b.s_b4;
#define s_lh S_un.S_un_b.s_b3;
При инициализации сокета в этой структуре следует указать адрес IР
(32-битовое уникальное число, идентифицирующее данный компьютер, о
- 45 - няющей обмен по сети. На одном узле может одновременно работать не- сколько программ, использующих разные порты. Особенностью поля sin_port является использование так называемого сетевого формата данных. Этот формат отличается от того, что принят в процессорах с архитектурой Intel, а именно - младшие байты данных хранят- ся по старшим адресам памяти (архитектура процессоров Intel подразумевает хранение старших байтов данных по младшим адресам). Cетевой формат данных удобен при организации глобальных сетей, так как в узлах такой сети могут использоваться компьютеры с различной архи- тектурой. Для выполнения преобразований из обычного формата в сетевой и об- ратно в интерфейсе Windows Socket предусмотрен специальный набор функций. В частности, для заполнения поля sin_port нужно использовать функцию htons, выполняющую преобразование 16-разрядных данных из формата Intel в сетевой формат. Ниже показано, как инициализируется поле sin_port в приложении SERVER, полностью описанном в [13] #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; } }; #define s_addr S_un.S_addr; #define s_host S_un.S_un_b.s_b2; #define s_net S_un.S_un_b.s_b1; #define s_imp S_un.S_un_w.s_w2; #define s_impno S_un.S_un_b.s_b4; #define s_lh S_un.S_un_b.s_b3; При инициализации сокета в этой структуре следует указать адрес IР (32-битовое уникальное число, идентифицирующее данный компьютер, о
Страницы
- « первая
- ‹ предыдущая
- …
- 43
- 44
- 45
- 46
- 47
- …
- следующая ›
- последняя »