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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 17:31   #1
Merzaffka
 
Регистрация: 15.03.2011
Сообщений: 5
По умолчанию Threads

Пишу чат в 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, но вообще не понимаю как их использовать...(
мб кто-нибудь может помочь?
Merzaffka вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Threads ImmortalAlexSan Помощь студентам 0 20.05.2010 18:29
threads indy delphi sokolv Фриланс 6 12.05.2010 14:44
Вопрос по потокам(Threads) Gwyllum Win Api 1 12.04.2010 15:58
Qt, Threads, Sockets... i-cpp Qt и кроссплатформенное программирование С/С++ 1 30.03.2010 02:10
Posix Threads Ghevond20 Общие вопросы C/C++ 0 12.12.2009 01:31