Главная страница
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.027 c
14-1129033295
alexsis
2005-10-11 16:21
2005.11.06
Словакия - Россия


14-1129120340
MacroDenS
2005-10-12 16:32
2005.11.06
Стабилизированные 12 вольт


14-1129545313
Opilki_Inside
2005-10-17 14:35
2005.11.06
Защита БД


4-1125764005
viv-x
2005-09-03 20:13
2005.11.06
Работа с TAPI на Delphi под Win 98 и Win XP


3-1127324773
Константин2
2005-09-21 21:46
2005.11.06
Хранимая процедура