Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: CAsyncSocket - от кого сообщение?
 
 автор: Евгений Петров   (26.12.2005 в 18:20)   письмо автору
 
 

Большое всем "Здравствуйте", а особенно Cheops'у. :) У меня снова проблемка с С++. Пишу что то вроде чата, на основе CAsyncSocket. При подключении нового пользователя создается новый сокет (они все хранятся на сервере в виде списка, и через него отправляются другим клиентам). Так вот скажем при отправки клиентом сообщения серверу на сервере вызывается обработчик OnReceive(). Как можно узнать кто именно отправил сообщение? И второй вопрос как узнать, если один из клиентов отключился - кто именно отключился? Заранее приебольшое спасибо!

   
 
 автор: cheops   (26.12.2005 в 19:46)   письмо автору
 
   для: Евгений Петров   (26.12.2005 в 18:20)
 

А что за библиотека CAsyncSocket? Хм... я с ней не работал, а по какому протоколу идёт обмен клиента с сервером? Клиенты "толстые" или "тонкие" (браузер)?

   
 
 автор: Евгений Петров   (26.12.2005 в 21:24)   письмо автору
 
   для: cheops   (26.12.2005 в 19:46)
 

Это типа класс такой, он по TCP посылает данные, работать с им довольно легко. Нужно наследовать от него свой класс, переопределить несколько методов (он будут взываться при возикновении соотв. событий:
OnAccept - при содинении клиента с сервером
OnReceive - при получении данных от клиента)

<?
class CASock : public CASyncSocket
{
  
virtual void OnAccept(int n ErrorCode);
  
virtual void OnReceive(int n ErrorCode);  
};
...
CASock MySock1MySock2;
// для сервера
MySock1.Create(2000); // номер порта
MySock1.Listen();
// для клиента 
MySock1.Create();
MySock1.Connect("localhost",2000)

void CASock::OnAccept()
{
  
// при установлении соединения
  
MySock1.Accept(MySock2);
}

void CASock::OnReceive()
{
  
// при приеме сообщ
  
char buffer[1024];
  
MySock2.Receive(buffer,1024)
}
...
?>


Ну вообщем примерно так...

   
 
 автор: Евгений Петров   (26.12.2005 в 21:28)   письмо автору
 
   для: Евгений Петров   (26.12.2005 в 21:24)
 

Ну только само собой - это не PHP :))) Просто так код более наглядно выглядит...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования