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

Вниз

И снова сокеты   Найти похожие ветки 

 
iWorm ©   (2003-08-27 03:11) [0]

Здравствуйте, вот сейчас пытаюсь:) написать свой собственный чат на основе сокетов, вообще то я его уже "написал", но по-принципу SendText и его ресив...
Я вот знаю, что это:= not умно, так как приходится писать кучу подпрограмм по выделению оттудова(из принятого текста) ника, его шрифта, самого сообщения и еще кучи всякой информации, но я не знаю как пересылать записи. Так вот если Вы еще не устали и не закрыли эту страницу, то позвольте я перейду к делу:)...
Значится у меня есть вот такая штучка:

type
TMyMessage = record
MesID: string[10];
FromName,
ToName: string[20];
ClientIp: string[15];
font: TFont;
BackColor: TColor;
Msg: string[250];
Params: string[100];
end;

......
var
message: TMyMessage;
......

И собственно напросившиеся вопросы:
1. Можно ли это все передать с клиента на сервер
2. Если нельзя, то, что поправить чтоб было можно сделать пункт 1
3. Как это все передать с клиента на сервер

еще желательно с кодами приема и передачи...

зарание спасибо,
с уважением Иван Семенов


 
Demetrius2003 ©   (2003-08-27 09:41) [1]

Попробуй Socket.Sendtext(String(message));
А при получении message:=TMyMessage(Socket.ReceiveText);
Должно быть что-то в этом роде


 
panov ©   (2003-08-27 11:58) [2]

>iWorm © (27.08.03 03:11)
Можно ли это все передать с клиента на сервер

Можно, преобразовав структуру вот к такому виду:

type
TMyMessage = packed record
MesID: string[10];
FromName,
ToName: string[20];
ClientIp: string[15];
{ font: TFont;} // а вот TFont не надо использовать
BackColor: TColor;
Msg: string[250];
Params: string[100];
end;


После этого передавай и принимай данные как буфер.


 
Son!K ©   (2003-08-27 15:14) [3]

Хм а как прнять всё раскдать на сервере?


 
panov ©   (2003-08-27 18:34) [4]

>Son!K © (27.08.03 15:14) [3]

Хм а как прнять всё раскдать на сервере?

Длина структуры в байтах известна.

Например, первый байт буфера - pBuf: PChar;

тогда
type PMyMessage = ^TMyMessage;

var
pRec: PMyMessage;
pBuf; PChar;
begin
... //принимаем данные

pRec := PMyMessage(pBuf);
//далее обращаемся к полям структуры как
pRec^.MesID
pRec^.FromName


и т.д.


 
iWorm ©   (2003-08-28 02:01) [5]

2 panov © а что сделать с фонтом, его нада передать...


 
Rouse_ ©   (2003-08-28 02:25) [6]

Объедини все это дело в одну строку а разделитель используй #0
Получится
Идентификатор#0Ник#0Еще_ник#0IP#0Font_Name#0Font_Syze#0Font_Style#0BkC olor#0....

Передается такая строка всеравно в виде буфера (собственно это и получается буфер т.е. динамический массив типа Byte или Char кому как нравится, не в названии дело) По приходе парсируй.

Желаю успехов


 
iWorm ©   (2003-08-28 03:24) [7]

2 Rouse_ ©
Если я правильно понял - ты имеешь ввиду что я должен использовать кучу констант для font.name, font.style, чтобы это все объединить в одну строку; и это еще ладно а как с font.color или с BackColor поступить???

c уважением, Иван Семенов


 
Son!K ©   (2003-08-28 03:26) [8]

> panov

Если не сложно скинь на мыло пирмерчк по подробней с отправкой и приёмом простенькой структуры и разбором её на сервере. Начинаю, ни чего не понял из выше сказаного :)

Буду очень благодарен.


 
Rouse_ ©   (2003-08-28 04:24) [9]

> iWorm © (28.08.03 03:24) [7]
И их тудаже, а как ты думал? Структуру ты передашь только в виде буфера, Stream - тоже им передается. Я просто предлагаю вариант организации этого буфера.

Желаю успехов


 
iWorm ©   (2003-08-28 04:46) [10]

2 Rouse_ © (28.08.03 04:24) [9]
да я понял, спасибо, но по большей части я хотел перейти именно от процедур выделения состовляющих, и от констант, потому как все оч. тяжело объявить...

2 panov © (27.08.03 18:34) [4]
Да мне тож, если не сложна, на мыло или тут напиши полный рабочий код отправки и приема... Я буду благодарен...

с уважением, Иван Семенов


 
Polevi ©   (2003-08-28 09:49) [11]

type
TMyMessage = class(TPersistent)
...
...
published
MesID: string read .. write ..;
FromName: string read .. write ..;
ToName: string read .. write ..;
ClientIp: string read .. write ..;
font: TFont read .. write ..;
BackColor: TColor read .. write ..;
Msg: string read .. write ..;
Params: string read .. write ..;
end;

myMessage:=TMyMessage.Create(..)
..
..

ms:=TMemoryStream.Create;
ms.WriteComponent(myMessage);

ms -> socket
...................................................
socket->ms

myMessage:=ms.ReadComponent(nil);


 
Polevi ©   (2003-08-28 09:50) [12]

PS
сорри, TMyMessage = class(TComponent)



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
3-74085
Gennadiy
2003-10-01 16:14
2003.10.23
Как вставить данные одновременно в главную и подчиненную таблицы


11-74104
Ajax
2003-02-02 09:00
2003.10.23
XP-прозрачность у KOL-форм


7-74491
MoRT
2003-08-10 20:15
2003.10.23
Работа с памятью и указателями


1-74254
Stas
2003-10-13 11:10
2003.10.23
Графические координаты в TMemo


7-74510
suric
2003-08-06 14:26
2003.10.23
Программирование USB под Win32