Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Instant Messanger. Проблемы при отправке сообщения от сервера клиенту.

35K
12 февраля 2008 года
Michele
1 / / 12.02.2008
Пишу сейчас Instant Messanger на сокетах с собственным сервером, который связан с БД пользователей. Сервер реализован как консольное приложение + отдельно реализована клиентская часть. На каждого подключенного клиента создается отдельный поток, все потоки содержатся в List<ProtocolService>. ProtocolService - Класс в серверной части, обеспечивающий работу и обслуживание одного подключённого клиента. При отправке сообщения от одного клиента другому на данном этапе разработки smile, оно доходит до севера, сохраняется там и по запросу другой клиент получает его, проблема возникает при мгновенной отправке сообщения, когда оно получено сервером.

В классе IMServer реализован серверный поток обслуживания новых клиентов. При подключении нового клиента для него создается новый класс ProtocolService, в котором реализован поток обслуживания данного подключенного клиента.
В buff содержится набор данных от клиента в виде потока байт, первый байт которого содержит информацию о типе запроса или данных (на аворизацию, загрузку контакт листа.. а также отправку сообщения)

switch ((Protocol.ProtocolCommands)buff[0])
{
case Protocol.ProtocolCommands.ToAuthenticate:{}
// Клиент отправляет сообщение другому клиенту через сервер
case Protocol.ProtocolCommands.ToSendMessage:
if (auth != null)
{
IMMessage msg = IMMessage.GetMessageFromBytes(buff, 1);
msgStorage.AddIMMassage(msg);

1) // ? IMServer ss1 = new IMServer();
2) // ? ss1.proc(msg);

}
else
SendStringToClient("You are not authenticated.");

break;

2)- обращение к процедуре отправки сообщения в IMServer
1) - создание нового IMServer

Внутри класса ProtocolService передать сообщение другому клиенту мне кажется невозможно (если вы считаете по-другому, напишите пожалуйста). Мне кажется целесообразнее отправлять сообщения из класса IMServer, но когда мы передаем сообщение из класса ProtocolService в класс IMServer, мы создаем новый класс IMServer, а не возвращаемся в тот, который создал текущий ProtocolService. Как можно обойти этот момент, потому как новый класс пустой и не содержит никакой информации?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог