Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Движок для чата. [D5, D6, Win95/98, WinME]


Степа ©   (2001-11-25 20:35:00) 

Чем лучше воспользоваться. Я сделал через сокеты.
проблема в том, что когда в чате много юзеров, и все сразу чето пишут, эти сообщения сразу идут на сервери там сливаются в одно. Т.е конечно можно программировать разрыв между мессагами но мне уже некогда. Есть какойнить команент, чтобы я отправил сообщение оно прошло и сервак получил сначало Его , обработал, а потом все остальные поставил в очередь.. или мне приедтся все это самому писать?


Vitamin   (2001-11-27 16:05:00) [1]

>Степа

Вопрос на вопрос...
А как обстаят у тебя дела с пересылкой файлов?<BR>

У меня свой проткл. (названия ещё не придумал)<BR>
[идент. протокола - 5 байт] [4 байта тип данных(файл/текст/...)] [данные] [конец потока - 2 байта].
<BR>

и все - есть физ. начало и конец пакета собственного протокола.


panov   (2001-11-27 15:54:00) [2]

>Степа (25.11.01 20:35)
Честно говоря, проблема непонятна.
Каждого клиента нужно обрабатывать по отдельности - вот и все.
Разделитель между сообщениями 0d0a.
Пока строка не закончена - сообщение не рассылается клиентам.


Polevi   (2001-11-27 15:20:00) [3]

2Степа
Ты меня не понял - ограничение будет на размер ОДНОГО сообщения, а не сумме всех сообщений в гнезде


Digitman   (2001-11-27 13:44:00) [4]

>Степа
Проще всего использовать UDP-гнезда (message oriented). При их использовании каждое отдельное сообщение будет вызывать отдельное событие на сервере.
При использовании же stream oriented - гнезд передающая сторона должна предварять свое сообщение префиксом размера сообщения, что бы сервер мог читать из вх.потока ровно столько данных, сколько соответствует размеру очередного сообщения в потоке


Степа   (2001-11-27 13:18:00) [5]

так.. вот смотри.
есть порт, к нему сокет
одновременно в этот порт (на сервер поступают):
1) все простые сообщения (18 человек ведут дискуссию)
2) системные сообщения (кто кого выбросил, запросы на обновления, рассылка листов и все такое)

я незнаю. думаешь 8кб хватит на все на это??? + еще загруженность канала


Polevi   (2001-11-27 10:50:00) [6]

Для чата можно считать что сообщение целиком приходит - если размер данных в гнезде меньше указанного в заголовке можно просто отрубать такого клиента - то есть таким образом будет ограничение на объем посылаемого текста в 8 кбайт


Степа   (2001-11-26 18:30:00) [7]

ну я вообще знаю как это сделать.. просто не охото.
А теперь в тему о твеом методе.

МОжет быть так, что сервер отправит одно полное сообщение а потом еще кусочек. отгда получиться что при обработке второго вылезет косяк - это значит надо ждать конца от второго. короче тут система сложная. хотелось бы ченить найти из стандартного


Polevi   (2001-11-26 08:28:00) [8]

К каждому сообщнию при посылке цепляй заголовок, содержащий размер сообщения. На серваке читай заголовок сначала, а потом столько байт, сколько в заголовке указано.


Наверх

Титульная страница Поиск, карта сайта Написать письмо