Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2017, 14:44   #1
Xaip420
Новичок
Джуниор
 
Регистрация: 16.10.2017
Сообщений: 3
Смех MFC клиент

// client2Dlg.cpp : файл реализации
//

#include "stdafx.h"
#include "client2.h"
#include "client2Dlg.h"
#include "afxdialogex.h"
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#pragma warning(disable : 4996)
#define PORT 666
#define SERVERADDR "127.0.0.1"
#define _CRT_NONSTDC_NO_WARNINGS



#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// Диалоговое окно CAboutDlg используется для описания сведений о приложении

class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();

// Данные диалогового окна
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif

protected:
virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV

// Реализация
protected:
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}

void CAboutDlg::DoDataExchange(CDataExch ange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// диалоговое окно Cclient2Dlg



Cclient2Dlg::Cclient2Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_CLIENT2_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void Cclient2Dlg::DoDataExchange(CDataEx change* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(Cclient2Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDOK, &Cclient2Dlg::OnBnClickedOk)
END_MESSAGE_MAP()


// обработчики сообщений Cclient2Dlg

BOOL Cclient2Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// Добавление пункта "О программе..." в системное меню.

// IDM_ABOUTBOX должен быть в пределах системной команды.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBO X);
ASSERT(bNameValid);
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 Cclient2Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}

// При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,
// чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений,
// это автоматически выполняется рабочей областью.

void Cclient2Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // контекст устройства для рисования

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafe Hdc()), 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
{
CDialogEx::OnPaint();
}
}

// Система вызывает эту функцию для получения отображения курсора при перемещении
// свернутого окна.
HCURSOR Cclient2Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}



void Cclient2Dlg::OnBnClickedOk()
{
int main(int argc, char* argv[]);
CString str;
char buff[1024];
AfxMessageBox(_T("TCP DEMO CLIENT\n"));
// Шаг 1  инициализация библиотеки Winsock
if (WSAStartup(0x202, (WSADATA *)&buff[0]))
{
AfxMessageBox(_T("WSAStart error %d\n", WSAGetLastError()));

}
// Шаг 2 - создание сокета
SOCKET my_sock;
my_sock = socket(AF_INET, SOCK_STREAM, 0);
if (my_sock<0)
{
AfxMessageBox(_T("Socket() error %d\n", WSAGetLastError()));

}
// Шаг 3 - установка соединения
// заполнение структуры sockaddr_in – указание адреса и порта сервера
sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(PORT);
HOSTENT *hst;
// преобразование IP адреса из символьного в сетевой формат
if (inet_addr(SERVERADDR) != INADDR_NONE)
dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
else
// попытка получить IP адрес по доменному имени сервера
if (hst = gethostbyname(SERVERADDR))
// hst->h_addr_list содержит не массив адресов,
// а массив указателей на адреса
((unsigned long *)&dest_addr.sin_addr)[0] =
((unsigned long **)hst->h_addr_list)[0][0];
else
{
AfxMessageBox(_T("Invalid address %s\n", SERVERADDR));
closesocket(my_sock);
WSACleanup();

}
// адрес сервера получен – пытаемся установить соединение
if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
{
AfxMessageBox(_T("Connect error %d\n", WSAGetLastError()));

}
AfxMessageBox(_T("Соединение с %s успешно установлено\n\
Type quit for quit\n\n", SERVERADDR));
// Шаг 4 - чтение и передача сообщений
int nsize;
while ((nsize = recv(my_sock, &buff[0], sizeof(buff) - 1, 0)) != SOCKET_ERROR)
{
// ставим завершающий ноль в конце строки
buff[nsize] = 0;
str = CString(buff);
AfxMessageBox(_T("", str));
//BuffBox.AddString(str);
UpdateData(false);
char asd[] = "Текст для отправки на сервер";
int vxc = sizeof(asd);
while (vxc != 0) {
send(my_sock, &asd[0], nsize, 0);
vxc--;
}
// передаем строку клиента серверу
send(my_sock, &buff[0], nsize, 0);
}
AfxMessageBox(_T("Recv error %d\n", WSAGetLastError()));
closesocket(my_sock);
WSACleanup();

CDialogEx::OnOK();
}
Xaip420 вне форума Ответить с цитированием
Старый 16.10.2017, 15:21   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Вопрос-то в чём?
Black Fregat вне форума Ответить с цитированием
Старый 18.10.2017, 22:41   #3
Xaip420
Новичок
Джуниор
 
Регистрация: 16.10.2017
Сообщений: 3
Восклицание 1234

#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#pragma warning(disable : 4996)
#define PORT 666
#define SERVERADDR "127.0.0.1"
#define _CRT_NONSTDC_NO_WARNINGS


int main(int argc, char* argv[]);
CString str;
char buff[1024];
AfxMessageBox(_T("TCP DEMO CLIENT\n"));
// Шаг 1  инициализация библиотеки Winsock
if (WSAStartup(0x202, (WSADATA *)&buff[0]))
{
AfxMessageBox(_T("WSAStart error %d\n", WSAGetLastError()));

}
// Шаг 2 - создание сокета
SOCKET my_sock;
my_sock = socket(AF_INET, SOCK_STREAM, 0);
if (my_sock<0)
{
AfxMessageBox(_T("Socket() error %d\n", WSAGetLastError()));

}
// Шаг 3 - установка соединения
// заполнение структуры sockaddr_in – указание адреса и порта сервера
sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(PORT);
HOSTENT *hst;
// преобразование IP адреса из символьного в сетевой формат
if (inet_addr(SERVERADDR) != INADDR_NONE)
dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
else
// попытка получить IP адрес по доменному имени сервера
if (hst = gethostbyname(SERVERADDR))
// hst->h_addr_list содержит не массив адресов,
// а массив указателей на адреса
((unsigned long *)&dest_addr.sin_addr)[0] =
((unsigned long **)hst->h_addr_list)[0][0];
else
{
AfxMessageBox(_T("Invalid address %s\n", SERVERADDR));
closesocket(my_sock);
WSACleanup();

}
// адрес сервера получен – пытаемся установить соединение
if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
{
AfxMessageBox(_T("Connect error %d\n", WSAGetLastError()));

}
AfxMessageBox(_T("Соединение успешно установлено\n\
Type quit for quit\n\n", SERVERADDR));
// Шаг 4 - чтение и передача сообщений
int nsize;
CString str;
((nsize = recv(my_sock, &buff[0], sizeof(buff) - 1, 0)) != SOCKET_ERROR);

// ставим завершающий ноль в конце строки
buff[nsize] = 0;
str = CString(buff);
SetDlgItemText(IDC_EDIT1, str);
char asd[] = "Текст для отправки на сервер";
int i = sizeof(asd);
while (i != 0)
{
send(my_sock, &asd[0], nsize, 0);
i--;
}
AfxMessageBox(_T("Receive error! %d\n", WSAGetLastError()));
closesocket(my_sock);
WSACleanup();
Xaip420 вне форума Ответить с цитированием
Старый 18.10.2017, 23:38   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Вопрос-то в чём?
waleri на форуме Ответить с цитированием
Старый 19.10.2017, 00:20   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Ну второе сообщение = это консольный клиент TCP, а в первом случае этот же клиент был без смазки впендюрен в обработчик кнопки MFC проекта.

Посмотрев в хрустальный шар, глубокомысленно изрекаю: человек хочет оконный клиент TCP на базе MFC
Black Fregat вне форума Ответить с цитированием
Старый 19.10.2017, 01:56   #6
Xaip420
Новичок
Джуниор
 
Регистрация: 16.10.2017
Сообщений: 3
По умолчанию

Просто завтра у меня пересдача по Программированию и сюда залил код чтобы аккуратно использовать
Xaip420 вне форума Ответить с цитированием
Старый 19.10.2017, 02:07   #7
shato
Новичок
Джуниор
 
Регистрация: 19.10.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Ну второе сообщение = это консольный клиент TCP, а в первом случае этот же клиент был без смазки впендюрен в обработчик кнопки MFC проекта.

Посмотрев в хрустальный шар, глубокомысленно изрекаю: человек хочет оконный клиент TCP на базе MFC
https://drive.google.com/file/d/0B6l...hWNXBEbzg/view
shato вне форума Ответить с цитированием
Старый 19.10.2017, 02:29   #8
shato
Новичок
Джуниор
 
Регистрация: 19.10.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Вопрос-то в чём?
void CMFCApplication1Dlg::OnBnClickedBut ton1()
{
char buff[1024];
AfxMessageBox(_T("TCP DEMO CLIENT\n"));
// Шаг 1  инициализация библиотеки Winsock
if (WSAStartup(0x202, (WSADATA *)&buff[0]))
{
AfxMessageBox(_T("WSAStart error %d\n", WSAGetLastError()));
//return -1;
}
// Шаг 2  создание сокета
SOCKET my_sock;
my_sock = socket(AF_INET, SOCK_STREAM, 0);
if (my_sock<0)
{
AfxMessageBox(_T("Socket() error", WSAGetLastError()));
//return -1;
}
// Шаг 3  установка соединения
// заполнение структуры sockaddr_in – указание адреса и порта сервера
sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(PORT);
HOSTENT *hst;
// преобразование IP адреса из символьного в сетевой формат
if (inet_addr(SERVERADDR) != INADDR_NONE)
dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
else
// попытка получить IP адрес по доменному имени сервера
if (hst = gethostbyname(SERVERADDR))
// hst>h_addr_list содержит не массив адресов,
// а массив указателей на адреса
((unsigned long *)&dest_addr.sin_addr)[0] =
((unsigned long **)hst->h_addr_list)[0][0];
else
{
AfxMessageBox(_T("Invalid address", SERVERADDR));
closesocket(my_sock);
WSACleanup();
//return -1;
}
// адрес сервера получен – пытаемся установить соединение
if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
{
AfxMessageBox(_T("Connect error %d\n", WSAGetLastError()));
//return -1;
}
AfxMessageBox(_T("Соединение с сервером успешно установлено Type quit for quit", SERVERADDR));
// Шаг 4  чтение и передача сообщений
int nsize;
CString str;
((nsize = recv(my_sock, &buff[0], sizeof(buff)-1, 0)) != SOCKET_ERROR);


buff[nsize] = 0;
str = CString(buff);
SetDlgItemText(IDC_EDIT1, str);

char asd[] = "shatokhin";
int i = sizeof(asd);

// выводим на экран
//printf("S=>C:%s", buff);
// читаем пользовательский ввод с клавиатуры
//printf("S<=C:"); fgets(&buff[0], sizeof(buff)1, stdin);
// проверка на "quit"
//if (!strcmp(&buff[0], "quit\n"))
//{
// Корректный выход
//printf("Exit...");
//closesocket(my_sock);
//WSACleanup();
//return 0;
//}
// передаем строку клиента серверу

while (i != 0)
{
send(my_sock, &asd[0], nsize, 0);
i--;
}

/*AfxMessageBox(_T("Recv error", WSAGetLastError()));
closesocket(my_sock);
WSACleanup();*/
//return -1;
}


void CMFCApplication1Dlg::OnBnClickedOk( )
{
CString cat;
GetDlgItemText(IDC_EDIT1, cat);

AfxMessageBox(cat);

}
shato вне форума Ответить с цитированием
Старый 19.10.2017, 02:30   #9
shato
Новичок
Джуниор
 
Регистрация: 19.10.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от shato Посмотреть сообщение
void CMFCApplication1Dlg::OnBnClickedBut ton1()
{
char buff[1024];
AfxMessageBox(_T("TCP DEMO CLIENT\n"));
// Шаг 1  инициализация библиотеки Winsock
if (WSAStartup(0x202, (WSADATA *)&buff[0]))
{
AfxMessageBox(_T("WSAStart error %d\n", WSAGetLastError()));
//return -1;
}
// Шаг 2  создание сокета
SOCKET my_sock;
my_sock = socket(AF_INET, SOCK_STREAM, 0);
if (my_sock<0)
{
AfxMessageBox(_T("Socket() error", WSAGetLastError()));
//return -1;
}
// Шаг 3  установка соединения
// заполнение структуры sockaddr_in – указание адреса и порта сервера
sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(PORT);
HOSTENT *hst;
// преобразование IP адреса из символьного в сетевой формат
if (inet_addr(SERVERADDR) != INADDR_NONE)
dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
else
// попытка получить IP адрес по доменному имени сервера
if (hst = gethostbyname(SERVERADDR))
// hst>h_addr_list содержит не массив адресов,
// а массив указателей на адреса
((unsigned long *)&dest_addr.sin_addr)[0] =
((unsigned long **)hst->h_addr_list)[0][0];
else
{
AfxMessageBox(_T("Invalid address", SERVERADDR));
closesocket(my_sock);
WSACleanup();
//return -1;
}
// адрес сервера получен – пытаемся установить соединение
if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
{
AfxMessageBox(_T("Connect error %d\n", WSAGetLastError()));
//return -1;
}
AfxMessageBox(_T("Соединение с сервером успешно установлено Type quit for quit", SERVERADDR));
// Шаг 4  чтение и передача сообщений
int nsize;
CString str;
((nsize = recv(my_sock, &buff[0], sizeof(buff)-1, 0)) != SOCKET_ERROR);


buff[nsize] = 0;
str = CString(buff);
SetDlgItemText(IDC_EDIT1, str);

char asd[] = "shatokhin";
int i = sizeof(asd);

// выводим на экран
//printf("S=>C:%s", buff);
// читаем пользовательский ввод с клавиатуры
//printf("S<=C:"); fgets(&buff[0], sizeof(buff)1, stdin);
// проверка на "quit"
//if (!strcmp(&buff[0], "quit\n"))
//{
// Корректный выход
//printf("Exit...");
//closesocket(my_sock);
//WSACleanup();
//return 0;
//}
// передаем строку клиента серверу

while (i != 0)
{
send(my_sock, &asd[0], nsize, 0);
i--;
}

/*AfxMessageBox(_T("Recv error", WSAGetLastError()));
closesocket(my_sock);
WSACleanup();*/
//return -1;
}


void CMFCApplication1Dlg::OnBnClickedOk( )
{
CString cat;
GetDlgItemText(IDC_EDIT1, cat);

AfxMessageBox(cat);

}
// MFCApplication1Dlg.cpp : файл реализации
//

#include "stdafx.h"
#include "MFCApplication1.h"
#include "MFCApplication1Dlg.h"
#include "afxdialogex.h"
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#define PORT 666
#define SERVERADDR "127.0.0.1"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#pragma warning(disable: 4996)
shato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент-серверное приложение C++/MFC MaGWaY_minsk Фриланс 1 08.06.2013 06:37
MFC база данных на клиент-серверной основе Skullet C/C++ Сетевое программирование 2 17.12.2012 21:23
Drag&Drop NO MFC! NO MFC! Антоним Win Api 1 12.11.2012 21:43