Форум: "Сети";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизПроблема при передаче списка TThreadList Найти похожие ветки
← →
FrykT (2005-06-07 05:36) [0]Доброго времени суток!
попробую описать проблему. Пишу чат. Использую TTcpServer и TTcpClient. Имеем Users типа TThreadList.
в type обьявляю вот это:WConnection = ^TConnection;
TConnection = record
host:string[20];
nick:string[30];
thread:pointer;
end;
В событии ОнКоннект сервера создаю обьект типа WConnection, ему присваиваю необходимые значения и добавляю в USERS. На клиенте решил хранить список юзеров, хост и Тхреад в таком же объекте типа TThreadList. Передача от сервера к клиенту происходит через буфер. Передается структура, чтото типа такого:record=
nick:string[20];
text:shortstring;
AddUser:WConnection;
cmd:string[20];
end;
При добавлении отдельного юзера, переменная типа WConnection передается нормально, и обрабатывается тоже.
Возникла проблема со списком юзеров. Я пробывал передавать весь обьект TThreadList в структуре, но из этого у меня ничего не вышло. Как можно это сделать? Или посоветуйте что делать.
← →
FrykT (2005-06-07 05:38) [1]Извиняюсь, использую TidTcpServer и TidTcpClient.
← →
atruhin © (2005-06-07 07:55) [2]Придумай протокол передачи. Например первый байт определяет тип сообщения (Запись пользователя, список записей пользователя, сообщение от другого пользователя и т.д.), далее если идет передача списка пользователей, то второй байт (слово) передает кол-во пользователей в пакете, а после этого последовательно передаешь весь список. Список можещь хранить как угодно, в массиве, в списке и т.д., к протоколу передачи это отношения не имеет.
← →
Orion_Net (2005-07-21 08:26) [3]Люди помогите с этими компонентами, я не пойму в чем дело...
когда подрубаешься к серваку TcpServer у него срабатывет событие TcpServerAccept и можно пулять собщения между клиентом и сервером типа через Sendln и Receiveln. А когда просто посылаешь строку через эти же команды. сервер их не ловит. Неужели каждый раз отрубаться и подрубаться. Мне такой вариант не подходит. а в исходниках в Delphi имеено так и сделали
Program Files\Borland\Delphi7\Demos\Internet\NetChat
они лежат в папке с делфой 7. Подскажите.... Зараннее очень благодарен!
← →
Slym © (2005-07-22 08:35) [4]Все он ловит это ты не ловишь...
Где и как ты обрабатываешь запросы в сервере
← →
tesseract © (2005-07-23 20:30) [5]>>>Возникла проблема со списком юзеров. Я пробывал передавать весь обьект TThreadList в структуре, но из этого у меня ничего не вышло. Как можно это сделать? Или посоветуйте что делать.
Честно говоря могут и забанить и будут правы:
ЧИТАЙ УЧЕБНУЮ ЛИТЕРАТУРУ!!!!
WConnection = ^TConnection; - это по твоему объект? больше напоминает ссылку на запись.
>>> Я пробывал передавать весь обьект TThreadList в структуре
TThreadList массив указателей с собственной малопонятной структурой!!!! Указатели в DElphi тема для отдельного мата - ты передаёшь либо ничего либо фигню какую-либо.
передача WConnect может происходить и нормально (но не везде и не всегда)
← →
vers © (2005-07-23 21:10) [6]
> FrykT (07.06.05 05:36)
Зачем передавать клиенту ссылку на объект в памяти сервера? Может надо последовательно передать поля этой записи?
А в случае со списоком пользователей - сначала передается количество записей, а потом последовательно все записи. Я тоже пишу чат :) и лучше этого способа пока не придумал.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c