Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как получить инфу с сервера и вставить в клиент? [D6, WinXP]


Страницы:   1 2

BOBAKO ©   (2002-12-24 20:39:00) 

Воообщем вопрос в том чтобы получить имя Юзера с сервера и отправит его
на клиент и поместить в лабел1
код получения имени есть теперь не могли бы вы мне описать подробно как полученную инфу пихнуть в лабел1 в клиенте?
var osvi: TOSVersionInfo; si: TSystemInfo;
s:string;
dwResult, nsize: Cardinal;
ch : array[0..1000] of Char;
Бегин
GetUserName(ch, nsize);
ЕНД;

Помогите пожалусто если можно подробно...
Зарание благодарен спасибо!


C#KA   (2003-01-09 09:39:00) [1]

УУУ...
BOBAKO пришли мне прогу а я поправлю
E-mail C#KA@PROST.RU


BOBAKO   (2003-01-08 18:27:00) [2]

ну народ осталось не много помогите.


BOBAKO   (2003-01-07 18:50:00) [3]

вроде бы тупые мои мозги заводятся а что теперь написать в
button.onclick*****
begin

если кнопка эта находитс на форме 5 и ламбел тамже а слиенть на первой форме?


Cobalt   (2003-01-06 20:53:00) [4]

В общем, разрабатывай протокол обмена.
1) Выясняешь, чем у тебя будут обмениваться клиент и сервер
2) придумываешь для каждого типа операций код (1, 2, 3, 4 и т.д.)
3) пишешь структуры с объединениями, типа такого:
TMyRec = {packed?} record
TypeOfBuf: word; // Код данных, поясняющий, что ты пересылаешь
case TypeOfBuf of
1: s1: array[1..255] of char; //Name of Comp of Server
2: s2: array[1..255] of char; //Name of Comp of Client
3: t: TDateTime;
...
end;
end;
и
4) обмениваешься ими, и только ими.
При приеме читаешь данные в переменную того же типа (TMyRec), проверяешь код операции
(case TypeOfBuf of
......)
и - have FUN ^__^


Be$   (2003-01-06 13:33:00) [5]

Чтобы твой клиент понял, что ему пришла какая-то конкретная информация (в твоем случае имя компа ли юзера) ему нужно в этом помочь. Для этого сервер должен будет отсылать не только саму полученную инфу, но и "название" её. Например:

ServerSocket1.Socket.Connections[0].SendText("Comp;"+Compname);

где Compname- результат функции определения имени компа.
Код функции на всякий пожарный напишу :)

functionCompName: string;
varSize : cardinal;
pName : PChar;
BRes : boolean;
begin
Size := MAX_COMPUTERNAME_LENGTH + 1;
pName := StrAlloc(Size);
BRes := GetComputerName(pName, Size);
if BRes then
result:= StrPas(pName);
end;

Так вот...имя получили...вроде как отослали(с подсказкой-
"Comp"). :)) Теперь дело за малым: принять и обработать енто на клиенте.
Для этого пишем функцию определения "названиния"
полученной инфы. Она имеет очень сложный код, поэтому привожу его полностью :)

functionInfoName(TextFromServer:string): string;
begin
Result:=Copy(TextFromServer,1,pos(";",TextFromServer)-1);
end;
Эта функция и выделит из всего хлама "название" инфы то бишь
нужное "Comp" и клиент прочитав его присвоет имя компа в желаемое место:

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
begin
s:=Socket.ReceiveText;
...
if InfoName(s)= "Comp" then Label1.Caption:=s;
...
end;
Правда в Label1 попадет и само "Comp" но потрудись уже сам от этого избавиться. Это элементарно.


BOBAKO   (2003-01-05 12:42:00) [6]

Помошь закончилась? :(


BOBAKO   (2003-01-04 16:17:00) [7]

ну не знаю ща приведу несколько наименнований:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
ch := Socket.ReceiveText;
***
end;
это из сервера работает всё на стандартыных компонентах в кладке интернет...
если ещё что то надо напиши посмотрю...
И спасибо,за то что помогаешь!


Reindeer Moss Eater   (2003-01-04 16:02:00) [8]

как это сделать
Это можно сделать примерно тремя миллионами способов.
У тебя как сервер с клиентом общаются? Посредством чего?


BOBAKO   (2003-01-04 15:56:00) [9]

Получи на сервере. Передай на клиента. На клиенте прими и присвой свойству Caption/
----------
Вот прошу тебе обьясни мне как это сделать пожалусто,если можно подробнее.
Зарание благодарен.


Reindeer Moss Eater   (2003-01-04 15:13:00) [10]

Получи на сервере. Передай на клиента. На клиенте прими и присвой свойству Caption/


BOBAKO   (2003-01-04 15:09:00) [11]

ну выполню но как мне его с сервера взять и запихнуть в лабел на Клиенте вот в чём вопрос!
обьясните пожалусто.


Reindeer Moss Eater   (2003-01-04 15:06:00) [12]

нет это я получаю имя своей машины а как получить имя машины на которой установлен сервер:

Выполнить этот код на машине, на которой установлен сервер


BOBAKO   (2003-01-04 15:01:00) [13]

нет это я получаю имя своей машины а как получить имя машины на которой установлен сервер:
что тогда надо написать в сервере раз в клинте:
procedure TForm5.fcShapeBtn1Click(Sender: TObject);
var ch : array[0..MAX_COMPUTERNAME_LENGTH] of Char;
nSize: DWord;
begin
form1.lmdWavecomp4.Play;
nSize:=Succ(MAX_COMPUTERNAME_LENGTH);
GetComputerName(ch,nSize);
label2.Caption:="Имя компьютера: " + StrPas(ch);
end;

Пасиба,жду ответов!


Reindeer Moss Eater   (2003-01-04 09:06:00) [14]

var ch : array[0..MAX_COMPUTERNAME_LENGTH] of Char;
nSize: DWord;
begin
nSize:=Succ(MAX_COMPUTERNAME_LENGTH);
GetComputerName(ch,nSize);
Caption:="Компьютер: " + StrPas(ch);
end;


BOBAKO   (2003-01-03 21:35:00) [15]

вот код из сервера:
if ch = "25" then
begin
serversocket1.Socket.SendBuf();
end;

вот здесь у меня мозги откл вообще что дальше если код получения инфы такой:

var osvi: TOSVersionInfo; si: TSystemInfo;
s:string;
dwResult, nsize: Cardinal;
ch : array[0..1000] of Char;
begin

GetComputerName(ch, nsize);
Label1.Caption:="Компьютер: "+ch;

помогите пожалусто разобраться и понять!


BOBAKO   (2003-01-02 22:04:00) [16]

Digitman
А как это будет выглядетьв моём случае?


Digitman   (2002-12-31 08:49:00) [17]


> пихнуть в лабел1 в клиенте?



> ВПИСАТЬ ПОЛУЧЕННУЮ ИНФУ В ЛАБЕЛ НА СЕРВЕРЕ


Все-то тебе "пихнуть" да "вписать")

А чем, собственно, сервер от клиента отличается в этом случае ? Да ничем !)

Есть просто два хоста, в каждый момент времени один из них явл-ся "передатчиком", другой - "приемником" информации. Кто из них в данный момент времени является "сервером", а кто "клиентом" - по барабану (логика установления коннекта между хостами тебе, видимо, известна и не интересует в контексте вопроса)

"Передачтик" выполняет sendbuf(ch, sizeof(ch)), "приемник" - receivebuf(ch, sizeof(ch))-функции. В результате успешной (!) передачи/приема в АП процесса-"приемника" появится заполненная копия структуры ch, с которой ты можешь делать все, что угодно - хоть в "лабел пихать", хоть "не в лабел", хоть "не пихать" вообще (таки советую не "пихать" что-то куда-то, а обрабатыватьполученную инф-цию)


BOBAKO   (2002-12-30 20:15:00) [18]

ну МОГИТЕ ЖЕ НАРОД ИЛИ СТАТЬЮ ДАЙТЕ ПОЧИТАТЬ ПО ЭТОМУ ПОВОДУ ЧТОБ ПОДРОБНО
КАК МНЕ ВПИСАТЬ ПОЛУЧЕННУЮ ИНФУ В ЛАБЕЛ НА СЕРВЕРЕ?


BOBAKO   (2002-12-28 10:18:00) [19]

насчёт caption мне понятно а как организовать Полученная инфа что написать
вместо Полученная инфва мне вот эта самое валнует!
помогите пожалуста!


Reindeer Moss Eater   (2002-12-27 10:53:00) [20]

код получения имени естьтеперь не могли бы вы мне описать подробно как полученную инфу пихнутьв лабел1 в клиенте?
Label1.Caption:=<Полученная инфа>;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо