Главная страница
    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.036 c
2-1129377000
el_bandito
2005-10-15 15:50
2005.11.06
CRC ????


14-1129191575
SPeller
2005-10-13 12:19
2005.11.06
Про квадратные велосипеды


14-1128796474
mmms
2005-10-08 22:34
2005.11.06
Примечание для программистов.


14-1129360380
Колян
2005-10-15 11:13
2005.11.06
Нужно написать серверную программу


14-1128806339
Piter
2005-10-09 01:18
2005.11.06
Кто пользуется Kazaa? Что там с ней?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский