рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Blocksock.h

Blocksock.h - Лабораторная Работа, раздел Образование, Тема: Взаимодействие процессов через механизм гнезд   // Needs Winsock.h In The Precompiled Headers Typede...

 

// needs winsock.h in the precompiled headers

typedef const struct sockaddr* LPCSOCKADDR;

class CBlockingSocketException : public CException

{

DECLARE_DYNAMIC(CBlockingSocketException)

public:

// Constructor

CBlockingSocketException(char* pchMessage);

 

public:

~CBlockingSocketException() {}

virtual BOOL GetErrorMessage(LPTSTR lpstrError, UINT nMaxError,

PUINT pnHelpContext = NULL);

private:

int m_nError;

CString m_strMessage;

};

 

extern void LogBlockingSocketException(LPVOID pParam, char* pch, CBlockingSocketException* pe);

 

class CSockAddr : public sockaddr_in {

public:

// constructors

CSockAddr()

{ sin_family = AF_INET;

sin_port = 0;

sin_addr.s_addr = 0; } // Default

CSockAddr(const SOCKADDR& sa) { memcpy(this, &sa, sizeof(SOCKADDR)); }

CSockAddr(const SOCKADDR_IN& sin) { memcpy(this, &sin, sizeof(SOCKADDR_IN)); }

CSockAddr(const ULONG ulAddr, const USHORT ushPort = 0) // parms are host byte ordered

{ sin_family = AF_INET;

sin_port = htons(ushPort);

sin_addr.s_addr = htonl(ulAddr); }

CSockAddr(const char* pchIP, const USHORT ushPort = 0) // dotted IP addr string

{ sin_family = AF_INET;

sin_port = htons(ushPort);

sin_addr.s_addr = inet_addr(pchIP); } // already network byte ordered

// Return the address in dotted-decimal format

CString DottedDecimal()

{ return inet_ntoa(sin_addr); } // constructs a new CString object

// Get port and address (even though they're public)

USHORT Port() const

{ return ntohs(sin_port); }

ULONG IPAddr() const

{ return ntohl(sin_addr.s_addr); }

// operators added for efficiency

const CSockAddr& operator=(const SOCKADDR& sa)

{ memcpy(this, &sa, sizeof(SOCKADDR));

return *this; }

const CSockAddr& operator=(const SOCKADDR_IN& sin)

{ memcpy(this, &sin, sizeof(SOCKADDR_IN));

return *this; }

operator SOCKADDR()

{ return *((LPSOCKADDR) this); }

operator LPSOCKADDR()

{ return (LPSOCKADDR) this; }

operator LPSOCKADDR_IN()

{ return (LPSOCKADDR_IN) this; }

};

 

// member functions truly block and must not be used in UI threads

// use this class as an alternative to the MFC CSocket class

class CBlockingSocket : public CObject

{

DECLARE_DYNAMIC(CBlockingSocket)

public:

SOCKET m_hSocket;

CBlockingSocket() { m_hSocket = NULL; }

void Cleanup();

void Create(int nType = SOCK_STREAM);

void Close();

void Bind(LPCSOCKADDR psa);

void Listen();

void Connect(LPCSOCKADDR psa);

BOOL Accept(CBlockingSocket& s, LPSOCKADDR psa);

int Send(const char* pch, const int nSize, const int nSecs);

int Write(const char* pch, const int nSize, const int nSecs);

int Receive(char* pch, const int nSize, const int nSecs);

int SendDatagram(const char* pch, const int nSize, LPCSOCKADDR psa,

const int nSecs);

int ReceiveDatagram(char* pch, const int nSize, LPSOCKADDR psa,

const int nSecs);

void GetPeerAddr(LPSOCKADDR psa);

void GetSockAddr(LPSOCKADDR psa);

static CSockAddr GetHostByName(const char* pchName,

const USHORT ushPort = 0);

static const char* GetHostByAddr(LPCSOCKADDR psa);

operator SOCKET()

{ return m_hSocket; }

};

 

class CHttpBlockingSocket : public CBlockingSocket

{

public:

DECLARE_DYNAMIC(CHttpBlockingSocket)

enum {nSizeRecv = 1000}; // max receive buffer size (> hdr line length)

CHttpBlockingSocket();

~CHttpBlockingSocket();

int ReadHttpHeaderLine(char* pch, const int nSize, const int nSecs);

int ReadHttpResponse(char* pch, const int nSize, const int nSecs);

private:

char* m_pReadBuf; // read buffer

int m_nReadBuf; // number of bytes in the read buffer

};

 


– Конец работы –

Эта тема принадлежит разделу:

Тема: Взаимодействие процессов через механизм гнезд

Лабораторная работа... Тема Взаимодействие процессов через механизм гнезд... Цель Научиться передавать данные и сообщения между процессами компьютеров глобальной сети...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Blocksock.h

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Протокол IP.
IP определяет пакеты, называемые датаграммы (datagrams), являющиеся базовыми единицами интернет-взаимодействия. Эти пакеты, обычно длинной менее 1000 байт, передаются по всему миру при открытии Web

Протокол UDP.
UDP – это всего лишь небольшая надстройка над IP, поскольку прложения никогда не используют IP напрямую. Подобно IP, UDP не сообщаетотправителю о доставке датаграммы. UDP хорош для простых однократ

Протокол ТСР.
ТСР выполняет безошибочную передачу больших блоков донных, являющийся главным протоколом интернета. На рис.4 показан формат сегмента ТСР (он не называется датаграмма). ТСР располагается внутри IP-д

Основы HTTP.
HTTP – протокол более высокого уровня, он является протоколом для WWW и относительно прост. HTTP построен на основе ТСР. Он работает следующим образом: сервер ожидает (listens) запросы на

Запуск сервера
Сервер запускается в ответ на некоторое действие пользователя, например, выбор из меню. Вот обработчик команды:   CBlockingSocket g_sListen; // один глоб

Серверный поток
Теперь взглянем на функцию ServerThreadProc:   UINT ServerThreadProc(LPVOID pParam) {CSockAddr saClient; CHttpBlockingSocket sConnect;

Очистка
Чтобы избежать при завершении «утечек» памяти, программа должна убедиться, что завершены все рабочие потоки. Простейший способ выполнить это – закрыть ожидающий сокет. Это приведет к тому, что все

Упрощенный клиент НТТР
Теперь вариант со стороны клиента – простая программа, которая выполняет слепой (blind) запрос GET. Когда сервер принимает запрос GET с косой чертой, показанный ниже, он возвращает HTML-файл по умо

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги