Форум: "Сети";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
ВнизServer&ClientSocket Найти похожие ветки
← →
dr.karter (2002-08-30 14:16) [0]Уважаемые Мастерки. Научите пожалуста!!!
Хочу использовать ServerSocket & ClientSocket
Как установить между ними связь Кто должен находится у юзера а кто у Админа, и как сделать чтобы при посылании Админом на юзерскую машину букву, у юзера выполнялось какое-то действие,
при чем хочу чтобы это происходило моментально только послал, как у юзера начинает выполняться запланированное действие
????????????????????????????????????????????????????????????
Я пробовал Client стоит у Админа, а Server у юзера но действие начинает происходить только после двойного нажатия на кнопку....
Жду помощи!
← →
Timon (2002-08-30 15:21) [1]
Сервер лучше у админа, а дальше просто. Используй св-во tServerSocket.Socket.Connections и tCustomWinSocket.SendBuff. Скорость работы зависит от загруженности сервера и скорости машины.
← →
Malder (2002-08-30 15:29) [2]Ндааааааа...
и ты хочешь, чтобы тебе кто-то помог ?
Ты бы выложил исходный код сервера и клиента. И сказал в чем проблема...
← →
dr.karter (2002-08-30 16:06) [3]Код заключается вот в чем:
Админ нажимает на кнопочку
идет обработка:
Включается таймер для времени;
И должно посылаться сообщение на порт 1060 (предположим) ввиде буковки
А у юзера, в это время работает другая программа
Мне нужно чтобы юзерская тачка шерстила ентот 1060 порт и
если она видит сообщение что было послана какая-то буковка,то
делает неописуемые ниже действия. Так будет понятние? Поможете по текстно?
← →
YouNick (2002-08-30 16:10) [4]2dr.karter:
Вообще-то мастерок - это строительный инструмент ... Ты не туда обратился!!!!!
← →
Malder (2002-08-30 16:12) [5]Аригинальный код !
Выложи исходный код. КОД, который у тебя написан в Delphi.
А не то, как ты себе представляешь работу этого кода...
← →
dr.karter (2002-08-30 16:51) [6]У Админа:
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enable:=True;
ClientSocket1.Host:=Edit1.Text;
ClientSocket1.Active:=true;
ClientSocket1.Socket.SendText("R");
ClientSocket1.Active:=false;
end;
Это у юзера :
procedure TForm1.FormCreate(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Active:=TRUE;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Socket.ReceiveText ="R" then
ExitWindowsEx(EWX_SHUTDOWN,0);
end;
procedure TForm1.FormDistroy(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Active:=false;
end;
Вот исходник!
← →
VID (2002-08-31 01:21) [7]У тебя какой-то троянец "наоборот" получился :)
Может лучше у юзера будет клиентская часть ? При запуске она автоматически поключается к серверу, и готова принимать от него команды.
Хотя твой вариант тоже интересен..
Вобщем, в событии Form1.Create перед строчкой
Server.Active := true, напиши Server.Port := 1060;
Перед активацией клиента, тоже укажи порт 1060... хотя вполне возможно что они уже были указаны в дизайн-тайме...
И ещё : не стоит сразу после оправки текста (Client.SendText) деактивировать клиента... лучше деактивировать (как и активировать), его при нажатии спец. кнопки.
А в чём собственно проблема ? Что не получается-то ?
← →
dr.karter (2002-08-31 11:22) [8]Получается так, что мне приходится нажимать на кнопочку два раза
только потом у юзера происходит действия! вот
← →
dr.karter (2002-08-31 11:32) [9]
> И ещё : не стоит сразу после оправки текста (Client.SendText)
> деактивировать клиента... лучше деактивировать (как и активировать),
> его при нажатии спец. кнопки.
Дело в том что нажатие на эту кнопку происходит несколько раз в день. не выходя из проги. А чем это влияет? Когда я сразу после отправки закрываю коннект или опосля?
← →
VID (2002-08-31 12:52) [10]У админа пусть будет три кнопки:
1. Открыть сокет. КОД:
Client.Host := Edit1.Text;
Client.Active := true;
2. Отправить команду. КОД:
Client.Socket.SendText ("R");
3. Закрыть сокет. КОД:
Client.Close;
Основная идея: клиент не должен отправлять какой-либо пакет сразу же после установки его св-ва Active := true, т.е. если Active = true это ещё не значит что связь с сервером установлена и пакет дойдёт до сервера.
Тоже самое и относительно того, что не стоит сразу же после вызова метода SendText (), деактивировать клиента, т.к. нет гарантии, что текст будет отправлен на сервер, до того как будет закрыт клиентский сокет.
← →
dr.karter (2002-08-31 13:11) [11]Ясно! Спасибо! Сяду попробую.
А вот Timon мне советовал что это за фишкаи как ей пользоваться? Объясни пожалуста.
> Сервер лучше у админа, а дальше просто. Используй св-во
> tServerSocket.Socket.Connections и tCustomWinSocket.SendBuff.
> Скорость работы зависит от загруженности сервера и скорости
> машины.
← →
Malder (2002-08-31 13:52) [12]dr.karter, логика у тебя немного неправильная. Timon же тебе советовал алгоритм с правильной логикой. У тебя админ САМ коннектиться к серверу. А п идее логичнее было бы у админа установить сервер, а клиенты ClientSocket"ом к нему коннектятся. Вот тогда пригодилось бы ServerSocket.Socket.Connections
← →
VID (2002-08-31 15:35) [13]To dr. karter:
Согласен со словами агента :)
Поверни всё на 180 градусов :)
← →
dr.karter (2002-08-31 16:23) [14]Огромное СПАСИБО!
А не могли бы вы мне объяснить как допустим я могу фразы и тексты пересылать с помощью Socket"oв. А потом читать их в Memo
или Edit"е
??????????????????????????
← →
Malder (2002-08-31 16:51) [15]Странный вопрос...
у тебя же есть код:
if Socket.ReceiveText ="R" then
ExitWindowsEx(EWX_SHUTDOWN,0);
Так почемы бы не написатьedit1.ext:=Socket.ReceiveText;
?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c