Форум: "Сети";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Вниз

Движок для чата. 


Степа   (2001-11-25 20:35) [0]

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



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

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



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

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

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



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

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



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

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

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



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

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



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

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



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

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



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

>Степа

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

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

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




Форум: "Сети";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.013 c
1-57141           MystiX                2002-02-03 20:26  2002.02.18  
Заголовок окна


7-57227           Valera_S              2001-11-15 08:52  2002.02.18  
Мастера?


14-57212          Yuraz                 2001-12-29 10:58  2002.02.18  
EURO+ERO


3-57034           Besa                  2002-01-25 12:25  2002.02.18  
Дата и SQL


1-57094           lvovich               2002-02-02 10:45  2002.02.18  
Модальные окна