Сторона клиента

Рассмотрим процедуру установки канала связи со стороны клиента, использованную нами в приложении CLIENT, исходные тексты которого будут приведены ниже.

Для установки соединения в приложении используется функция SetConnection:

SOCKADDR _IN dest_sin;

void SetConnection(HWND hWnd)

{

PHOSTENT phe;

// Создаем сокет

srv_socket = socket(AF_INET, SOCK_STREAM, 0);

if(srv_socket == INVALID_SOCKET)

{

MessageBox(NULL, "socket Error", "Error", MB_OK);

return;

}

// Устанавливаем адрес IP и номер порта

dest_sin.sin_family = AF_INET;

// Определяем адрес узла

phe = gethostbyname ("localhost ");

if(phe == NULL)

{

closesocket (srv_socket);

MessageBox(NULL, "gethostbyname Error", "Error", MB_OK);

return;

}

// Копируем адрес узла

memcpy((char FAR *)&(dest_sin.sin_addr), phe->h_addr,

phe->h_length);

// Копируем номер порта

dest_sin.sin_port = htons(SERV_PORT);

// Устанавливаем соединение

if(connect(srv_socket, (PSOCKADDR)&dest_sin,

sizeof(dest_sin)) < 0)

{

closesocket (srv_socket);

MessageBox(NULL, "connect Error", "Error", MB_OK);

return;

}

}

Вначале с помощью функции socket эта функция создает сокет. Затем выполняется заполнение адресной информацией структуры dest_sin.

Обратите внимание, что для получения адреса IP мы воспользовались функцией gethostbyname, указав ей имя узла localhost.

Это имя отображается в файле HOSTS на адрес 127.0.0.1:

localhost

Адрес 127.0.0.1 является локальным. Вы можете использовать его для тестирования приложений, выполняющих обмен данными при помощи протокола TCP/IP, запуская сервер и клиент на одном и том же компьютере.

После заполнения структуры с адресной информацией функция connect создает канал связи с сервером.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: