Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
1-101300
^Sanya
2002-10-19 13:08
2002.10.31
Мастера! Когда оправдано применение второстепенных потоков???


3-101059
Sago
2002-10-07 05:58
2002.10.31
Базу в ресурсы


1-101244
SWD
2002-10-22 09:16
2002.10.31
Редактор с элементами управления


6-101429
klik
2002-08-28 09:51
2002.10.31
А что будет?


6-101428
AlexAn
2002-08-19 09:42
2002.10.31
Проблема с использованием TServerSocket в ServiceApplication !!!





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