Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Проблема при передаче списка 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
6-1122071841
vers
2005-07-23 02:37
2005.11.06
Сохранение указателя на TIdContext в Indy10


4-1125644854
Руслан
2005-09-02 11:07
2005.11.06
Посылка сообщения


11-1106565447
Кудрявцев Павел
2005-01-24 14:17
2005.11.06
DLL в KOL


2-1129059369
DroNIX
2005-10-11 23:36
2005.11.06
Как рационально изменить формулу


2-1129280012
Perf2k2
2005-10-14 12:53
2005.11.06
Подскажите новичку (насчет ТриВью и процедур)