Практическое введение в Internet, E-Mail, FTP, WWW и HTML

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


Рассмотрим процедуру установки канала связи со стороны клиента, использованную нами в приложении 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 создает канал связи с сервером.



    Содержание раздела