В общем по порядку:
Пишу сервер
Создала проект MFC AppWizard(exe)
добавила несколько кнопок: Connect, Quit, Send и окно EditBoxa
создала переменную для окна EditBoxa - m_edit1
далее для класса каждой кнопки ввела код:
для кнопки Send:
Код: Выделить всё
void CServerokDlg::OnBnClickedButton3()
{
int BuffLenght = m_edit1.LineLength();
// Вычисляем длину сообщения
SendSocket.Send(&BuffLenght,4);
// Посылаем клиенту длинну сообщения.
char* Buffer = new char[BuffLenght];
// подготавливаем буффер для введенного текста
m_edit1.GetLine(0,LPTSTR(Buffer),BuffLenght);
//записываем введенную строку в буфер
SendSocket.Send(Buffer,BuffLenght);
delete Buffer;
}
Код: Выделить всё
void CServerokDlg::OnBnClickedButton1()
{
AfxSocketInit(); // Иннициализация системы сокетов
CSocket MySocket; //создаем класс сокета сервера
if(!MySocket.Create(22222))
{
MessageBox(LPCTSTR("Ne sozdan Cocket"),LPCTSTR(""),MB_OK);
printf ("Ne sozdan socket");
}
else
{
printf (" socket sozdan");
}
// вызываем функцию создания и иннициализации сокета
MySocket.Listen(); // слушаем запросы от клиентов
MySocket.Accept(SendSocket);
MessageBox(LPCTSTR("Gotov"),LPCTSTR(""),MB_OK);
printf("Gotov!");
}
Код: Выделить всё
void CServerokDlg::OnBnClickedButton2()
{
SendSocket.Close(); // Закрываем сокет
CDialog::OnCancel();// Закрывем программу
}
далее тестирую через Telnet
и вот тут-то получаеться касяк((
он передаёт только лишь одно сообщение и ломается, пишет:
"This may be due to a corruption of the heap, which indicates a bug in Server.exe or any of DLL it has loaded."
Я новичок в этом деле и никак не могу понять что именно не правильно...
мб кто-нибудь подскажет как это исправить?