Главная страница
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.036 c
6-1121677512
Drow
2005-07-18 13:05
2005.11.06
отправка писем


3-1127898294
Tab
2005-09-28 13:04
2005.11.06
транзакции в MySQL, ODBC


14-1129364222
Progamer
2005-10-15 12:17
2005.11.06
юсб шнур для цифровиков


14-1129586099
beglec
2005-10-18 01:54
2005.11.06
www.delphimaster.ru - лучший способ поднять настроение.


8-1118390454
NikNet
2005-06-10 12:00
2005.11.06
Как мне получить Буфер звука из TMediaPlayer1 компонента?