Пишу чат в Visual Studio 2008
Написала сервер:
Код:
void CServerokDlg::OnBnClickedSend()
{
char Buffer [1024];
// подготавливаем буффер для введенного текста
int BufLength=m_edit1.GetWindowText(LPTSTR(Buffer), 1024);
//записываем введенную строку в буфер
SendSocket.Send(Buffer,BufLength+1);
}
void CServerokDlg::OnBnClickedConnect()
{
AfxSocketInit(); // Иннициализация системы сокетов
CSocket MySocket; //создаем класс сокета сервера
if(!MySocket.Create(22222))
{
AfxMessageBox(TEXT("Сокет не создан"));
}
// вызываем функцию создания и иннициализации сокета
MySocket.Listen(); // слушаем запросы от клиентов
MySocket.Accept(SendSocket);
AfxMessageBox(TEXT("Готов!"));
}
void CServerokDlg::OnBnClickedQuit()
{
SendSocket.Close(); // Закрываем сокет
CDialog::OnCancel();// Закрывем программу
}
написала клиент:
Код:
void MySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
int BufferLenght=10;
// переменная длины буфера должна быть проинициализирована
Receive(&BufferLenght,4);
//принимаем длину следующего пакета
char* Buffer = new char[BufferLenght+1];
//выделяем память под буфер в который щас будем принимать
// пакет (сообщение)
Buffer[BufferLenght]=0;
// записываем 0 в конец строки, чтоб получился ASCIIZ формат.
Receive(Buffer,BufferLenght);
//принимаем строку.....
MessageBox(NULL,LPCTSTR(Buffer),LPCTSTR(""),MB_OK); // выводим месаджбокс
delete Buffer;
//освобождаем память
CSocket::OnReceive(nErrorCode);
}
и
Код:
void CKlientDlg::OnBnClickedConnect()
{
// TODO: Add your control notification handler code here
if(!MySocket1.Create())
{AfxMessageBox(TEXT("Не создаётся сокет... =("));}
// создание сокета.....
if(!MySocket1.Connect(LPCTSTR("127.0.0.1"),22222))
{AfxMessageBox(TEXT("Нет соединения"));}
//подсоединение к серверу. важно действительно
// указать АйПи адресс сервера и правильный порт.....
}
void CKlientDlg::OnBnClickedQuit()
{
// TODO: Add your control notification handler code here
MySocket1.Close(); // Закрываем сокет
CDialog::OnCancel(); // Закрывем программу
}
void CKlientDlg::OnBnClickedButton3()
{
// TODO: Add your control notification handler code here
int BufferLenght=10;
MySocket1.Receive(&BufferLenght,4);
char* Buffer = new char[BufferLenght+1];
Buffer[BufferLenght]=0;
MySocket1.Receive(Buffer,BufferLenght);
MessageBox(LPCTSTR(Buffer),LPCTSTR(""),MB_OK);
delete Buffer;
}
теперь появилась такая проблема -надо объединить эти проги в одну, чтоб и отправляла сообщения и принимала...
но я новичёк в этом деле... я что-то нашла про Threads, но вообще не понимаю как их использовать...(
мб кто-нибудь может помочь?