Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.043 c
14-1129719369
Иг_Иг
2005-10-19 14:56
2005.11.06
Свернуть все окна !


4-1125246593
ЗЛО
2005-08-28 20:29
2005.11.06
Как програмно изменить фоновый рисунок рабочего стола?


2-1129294767
d_savrasov
2005-10-14 16:59
2005.11.06
вопрос по quickrep


14-1129638098
vanek_kg
2005-10-18 16:21
2005.11.06
где взять


1-1129484545
x.pro
2005-10-16 21:42
2005.11.06
Сглаживание графиков





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский