|
|
|
| Большое всем "Здравствуйте", а особенно Cheops'у. :) У меня снова проблемка с С++. Пишу что то вроде чата, на основе CAsyncSocket. При подключении нового пользователя создается новый сокет (они все хранятся на сервере в виде списка, и через него отправляются другим клиентам). Так вот скажем при отправки клиентом сообщения серверу на сервере вызывается обработчик OnReceive(). Как можно узнать кто именно отправил сообщение? И второй вопрос как узнать, если один из клиентов отключился - кто именно отключился? Заранее приебольшое спасибо! | |
|
|
|
|
|
|
|
для: Евгений Петров
(26.12.2005 в 18:20)
| | А что за библиотека CAsyncSocket? Хм... я с ней не работал, а по какому протоколу идёт обмен клиента с сервером? Клиенты "толстые" или "тонкие" (браузер)? | |
|
|
|
|
|
|
|
для: 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 MySock1, MySock2;
// для сервера
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:24)
| | Ну только само собой - это не PHP :))) Просто так код более наглядно выглядит... | |
|
|
|