Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ClientSocket,serverSocket

330
12 января 2007 года
kastron
215 / / 17.09.2006
Всем привет.Сейчас пишу программу удаленного администратирования.
Пишу на Делфи 6.Я знаю как сделать чтобы clientsocket отправил команду удаленному серверу,сервер ее принял и выполнил то, что нужно.Только есть одно но.Мне надо чтобы клиент отправил удаленному серверу значение скажем spinedit1 к примеру.Кто знает как это сделать?
С уважением,SNAKE
5.1K
12 января 2007 года
saturn61
108 / / 25.10.2006
Вот так можно передать строку...

ClientSocket.Socket.SendText('-->и вот тут команда<--');

А на сервере через событие сокета ClientRead

 
Код:
var
command:String;
...
procedure TForm1.ServerSocketClientRead(Sender:TObject; Socket:TCustomWinSocket);
begin
...
command:=Socket.Receive; //команда будет записана в эту переменную
...
end;


P.S. ты ж сказал знаешь как?!
1.9K
12 января 2007 года
InterWen
331 / / 16.09.2006
В смысле "значение"? Что-либо переменной длины?
Тогда это уже называется "разработать протокол" :)
1.9K
12 января 2007 года
[*]Frosty
278 / / 17.06.2006
Приведи пример обработчиков событий, выложи часть исходников для происнения, что значит "отправил команду удаленному серверу,сервер ее принял и выполнил" и "отправил удаленному серверу значение скажем spinedit1".
330
12 января 2007 года
kastron
215 / / 17.09.2006
Цитата от saturn61
ClientSocket.Socket.SendText('-->и вот тут команда<--');

да,это я знаю...Только я вот не знаю как передать и принять то что написано в spinedit...
7.9K
12 января 2007 года
user13
66 / / 07.11.2006
А я вот вообще не понимаю суть вопроса... :confused:
Что хочет автор ?
1.9K
12 января 2007 года
[*]Frosty
278 / / 17.06.2006
А
 
Код:
ClientSocket.Socket.SendText(CSpinEdit1.Text);

не подходит???
5.1K
12 января 2007 года
saturn61
108 / / 25.10.2006
Ну, в SendText отправлять как говорит
  • Frosty, а получать в command:=Socket.Receive, в переменную сохранится то, что отправили
  • 330
    12 января 2007 года
    kastron
    215 / / 17.09.2006
     
    Код:
    ClientSocket.Socket.SendText(CSpinEdit1.Text);

    не работает а если просто
     
    Код:
    ClientSocket.Socket.SendText(SpinEdit1.Text);
    тогда отсылает,
    но сервер ее принимать не хочет
    5.1K
    12 января 2007 года
    saturn61
    108 / / 25.10.2006
    выложи код, который у тебя на сервере
    330
    13 января 2007 года
    kastron
    215 / / 17.09.2006
    >выложи код, который у тебя на сервере
     
    Код:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
      var
    s:string;
    s:=socket.ReceiveText;
    if s='start' then
    halt;//к примеру

    Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом
     
    Код:
    ClientSocket.Socket.SendText(SpinEdit1.Text);
    347
    13 января 2007 года
    Maniak
    319 / / 05.11.2005
    Цитата: kastron
    >выложи код, который у тебя на сервере
     
    Код:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
      var
    s:string;
    s:=socket.ReceiveText;
    if s='start' then
    halt;//к примеру


    begin вапщето забыл забыл...
    и посмотри что приходит на сервер... типа showmessage(s);
    рабочий пример:

    Код:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var msg,submsg,substr:string;
        position:integer;
    begin
    msg:=Socket.ReceiveText;
    position:=pos('*:',msg);  //определяю позицию метки
    submsg:=copy(msg,0,position-1);  //режу строку на информацию до метки, и после метки
    substr:=copy(msg,position+2,length(msg)-position);

    //Socket.SendText('submsg: '+submsg);
    //Socket.SendText('substr: '+substr);

    if submsg='dir' then begin
    directorylistbox1.Directory:=substr;
    Socket.SendText('dir*:'+directorylistbox1.Items.Text);
    filelistbox1.Directory:=substr;
    Socket.SendText('file*:'+filelistbox1.Items.Text);
    end;
    5.1K
    14 января 2007 года
    saturn61
    108 / / 25.10.2006
    вроде на сервере в коде всё нормально...ну begin эт пустяк, приложится))))

    а что значит "сервер её принимать не хочет", ошибку выдает чтоли?

    Цитата: kastron

    Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом


    а где ты хочешь её читать???
    ..если чё она сразу в s и сохранится...

    12K
    14 января 2007 года
    Daim
    22 / / 26.05.2006
    У меня проблема была, когда с клиента отправлял текст вылетала ошибка.
    Вся проблема была в портах, порт в винде моей был чемто занят, и типа для моего клиента закрыт, поменял порт, всё как по маслу пошло.
    Может ошибка в этом ??
    1.9K
    15 января 2007 года
    [*]Frosty
    278 / / 17.06.2006
    Попробю резюмировать)
    Клиент:
    1)В обработчике, например нажатия на кнопку, нужно настроить адрес и порт клиента, а затем активировать его;(Установка соединения с серверо. При нажатии на кнопку, сервер должен уже быть запущен!!!)
    Привожу пример Си - кода, думаю переделать его в Pas не составит труда)
    Код:
    if(ClientSocket1->Active)
                    ClientSocket1->Active = false;// Если подключены, то отключаемся

            Server = "localhost";// адрес по-умолчанию
            // Вводим адрес
            if(InputQuery("Input Address", "Address", Server))
            {
                    if(Server.Length() > 0)
                    {
                            ClientSocket1->Host = Server;
                            ClientSocket1->Port = 1000;
                            ClientSocket1->Active = true;
                    }
            }


    2)Например на кнопку повесить отсылку какого-либо сообщения(будем отсылать методом SendText()).
     
    Код:
    ClientSocket1->Socket->SendText(CSpinEdit1->Text);


    Сервер:
    1)В конструкторе формы нужно настроить адрес и порт, а затем активировать сервер;
     
    Код:
    // Инициализация сервера
            ServerSocket1->Port = 1000;
            ServerSocket1->Active = true;

    2)В обработчике события OnClientRead считать отосланую клиентом строку.
     
    Код:
    // Принимаем сообщение и добавляем его в TMemo для визуализации)
            String receive = Socket->ReceiveText();
            Memo1->Lines->Add(receive);


    З.Ы. К Bilder прилагаеться самый простейший вариант чата, посмотри его(в патке Buider'a Examples/Internet/Chat).Да, и здесь в разделе исходников был более продвинутый чат на основе этих компонент, правда со незначительными багами)
    16K
    18 января 2007 года
    medved_68
    36 / / 06.07.2006
    Цитата: kastron
     
    Код:
    ClientSocket.Socket.SendText(CSpinEdit1.Text);

    не работает а если просто
     
    Код:
    ClientSocket.Socket.SendText(SpinEdit1.Text);
    тогда отсылает,
    но сервер ее принимать не хочет


    А соединение установлено??? А сокеты в каком режиме работают??? И как узнал что сервер не хочет принять сообщение??? А может принял, да ты не прочитал его??? И что нам вещает функция SendText - анализировал???
    kastron как видишь вопросов больше чем ответов.:)

    1.9K
    18 января 2007 года
    [*]Frosty
    278 / / 17.06.2006
    Цитата: kastron
    >выложи код, который у тебя на сервере
     
    Код:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
      var
    s:string;
    [COLOR="Red"]s:=socket.ReceiveText;[/COLOR]
    if s='start' then
    halt;//к примеру

    Только я вот не знаю как прочитать ту переменную,которую мы отпправляли клиентом
     
    Код:
    ClientSocket.Socket.SendText(SpinEdit1.Text);



    Как ты незнаешь, как ее прочитать? А выделеной строке, ты что делаешь?)

    330
    22 января 2007 года
    kastron
    215 / / 17.09.2006
    Уважаемые участники форума.Болъшое спасибо за помощъ.Всё работает.Я просто ступил с receivtext.С уважением,Snake
    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог