Тут половина это стандартный код, который VisualStudio генерит...
ClientSocket.h
| Код | #pragma once
// конечный объект команды CClientSocket class CClientSocket : public CAsyncSocket { private: CDialog* m_pwnd; virtual void OnReceive(int nErrorCode); virtual void OnConnect(int nErrorCode); virtual void OnSend(int nErrorCode); public: void Init(); CClientSocket(); int SendPacket(char *link); void SetParent(CDialog* pwnd); virtual ~CClientSocket(); };
|
ClientSocket.cpp
| Код | // ClientSocket.cpp: файл реализации //
#include "stdafx.h" #include "trysocket1.h" #include "ClientSocket.h" #include "trysocket1Dlg.h"
// CClientSocket
CClientSocket::CClientSocket() { } void CClientSocket::Init() { bool res; Create(); res=Connect("217.69.128.42",80); } int CClientSocket::SendPacket(char *link) { int ipacket,res; CString packet,lnk; lnk=link; packet="GET "; packet+=lnk; packet+=" HTTP/1.1\r\nHost: mail.ru\r\nConnection: Keepa-Alive\r\n\r\n"; ipacket=packet.GetLength(); res=Send(LPCTSTR(packet),ipacket); return res; } void CClientSocket::SetParent(CDialog *pwnd) { m_pwnd=pwnd; } void CClientSocket::OnReceive(int nErrorCode) { ((Ctrysocket1Dlg *)m_pwnd)->OnReceive(); } void CClientSocket::OnConnect(int nErrorCode) { ((Ctrysocket1Dlg *)m_pwnd)->OnConnect(); } void CClientSocket::OnSend(int nErrorCode) { ((Ctrysocket1Dlg *)m_pwnd)->OnSend(); } CClientSocket::~CClientSocket() { Close(); }
// функции-члены CClientSocket
|
trysocket1Dlg.h
| Код | // trysocket1Dlg.h : файл заголовка //
#pragma once
// диалоговое окно Ctrysocket1Dlg class Ctrysocket1Dlg : public CDialog { // Создание public: Ctrysocket1Dlg(CWnd* pParent = NULL); // стандартный конструктор CClientSocket clint; // Данные диалогового окна enum { IDD = IDD_TRYSOCKET1_DIALOG }; virtual void OnReceive(); virtual void OnConnect(); virtual void OnSend(); protected: virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV
// Реализация protected: HICON m_hIcon;
// Созданные функции схемы сообщений virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnGO(); DECLARE_MESSAGE_MAP() };
|
trysocket1Dlg.cpp
| Код | // trysocket1Dlg.cpp : файл реализации //
#include "stdafx.h" #include "trysocket1.h" #include "ClientSocket.h" #include "trysocket1Dlg.h"
#ifdef _DEBUG #define new DEBUG_NEW #endif
// Диалоговое окно CAboutDlg используется для описания сведений о приложении
class CAboutDlg : public CDialog { public: CAboutDlg();
// Данные диалогового окна enum { IDD = IDD_ABOUTBOX };
protected: virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV
// Реализация protected: DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP()
// диалоговое окно Ctrysocket1Dlg
Ctrysocket1Dlg::Ctrysocket1Dlg(CWnd* pParent /*=NULL*/) : CDialog(Ctrysocket1Dlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
void Ctrysocket1Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); }
BEGIN_MESSAGE_MAP(Ctrysocket1Dlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND(IDC_BUTTON1,OnGO) //}}AFX_MSG_MAP END_MESSAGE_MAP()
// обработчики сообщений Ctrysocket1Dlg
BOOL Ctrysocket1Dlg::OnInitDialog() { CDialog::OnInitDialog(); clint.SetParent(this); // Добавление пункта ''О программе...'' в системное меню.
// IDM_ABOUTBOX должен быть в пределах системной команды. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }
// Задает значок для этого диалогового окна. Среда делает это автоматически, // если главное окно приложения не является диалоговым SetIcon(m_hIcon, TRUE); // Крупный значок SetIcon(m_hIcon, FALSE); // Мелкий значок
// TODO: добавьте дополнительную инициализацию
return TRUE; // возврат значения TRUE, если фокус не передан элементу управления }
void Ctrysocket1Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }
// При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом, // чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений, // это автоматически выполняется рабочей средой.
void Ctrysocket1Dlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // контекст устройства для рисования
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Выравнивание значка по центру клиентского прямоугольника int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;
// Нарисуйте значок dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }
// Система вызывает эту функцию для получения отображения курсора при перемещении // свернутого окна. HCURSOR Ctrysocket1Dlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void Ctrysocket1Dlg::OnGO() { clint.Init(); clint.SendPacket("http://www.mail.ru"); } void Ctrysocket1Dlg::OnReceive() { int res,ibuf; char *buf=new char[1025]; ibuf=1024; CString mess; res=clint.Receive(buf,ibuf); buf[ibuf]=NULL; mess=buf; GetDlgItem(IDC_EDIT1)->SetWindowTextA(mess);
} void Ctrysocket1Dlg::OnConnect() { GetDlgItem(IDC_EDIT1)->SetWindowTextA("Connected"); } void Ctrysocket1Dlg::OnSend() { GetDlgItem(IDC_EDIT1)->SetWindowTextA("Sended"); }
|
|