![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Движок для чата. [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]К каждому сообщнию при посылке цепляй заголовок, содержащий размер сообщения. На серваке читай заголовок сначала, а потом столько байт, сколько в заголовке указано.