Конференция "Сети" » Проблема с приложением клиент-сервер [D7, WinXP]
 
  • Colonel (01.09.08 21:17) [0]
    Доброго всем времени суток,

    подскажите в чем может быть проблема: пытаюсь сделать простое приложение клиент сервер, но не работает.

    Вот код сервера:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ServerSocket1.Active := True;
    end;

    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
    var
    j : integer;
    begin
    i := ServerSocket1.Socket.ReceiveText;
    For j := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
     if ServerSocket1.Socket.Connections[j].SocketHandle <> Socket.SocketHandle then
      if i = 'status' then ServerSocket1.Socket.Connections[j].SendText('Ok. Connected. Listenning.');
    if i = 'logoff' then MyExitWindows(EWX_LOGOFF or EWX_FORCE);
    if i = 'reboot' then MyExitWindows(EWX_REBOOT or EWX_FORCE);
    if i = 'force reboot' then MyExitWindows(EWX_FORCEIFHUNG or EWX_FORCE);
    if i = 'shutdown' then MyExitWindows(EWX_SHUTDOWN or EWX_FORCE);
    if i = 'power off' then MyExitWindows(EWX_POWEROFF or EWX_FORCE);
    end;



    Вот код клиента:

    procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
    begin
    sb.SimpleText := 'Ïîäêëþ÷åíèå ïðîèçîøëî óñïåøíî';
    e_command.Visible := true;
    end;

    procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
     ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    begin
    sb.SimpleText := 'Ïðîèçîøëà îøèáêà';
    end;

    procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
     Socket: TCustomWinSocket);
    begin
    sb.SimpleText := 'Êëèåíò îòêëþ÷åí';
    end;

    procedure TForm1.ClientSocket1Connecting(Sender: TObject;
     Socket: TCustomWinSocket);
    begin
    sb.SimpleText := 'Ïîäêëþ÷àþñü ...';
    end;

    procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    begin
    i := Socket.ReceiveText;
    sb.SimpleText := i;
    end;

    procedure TForm1.Button4Click(Sender: TObject);
    begin
    ClientSocket1.Active := false;
    ClientSocket1.Close;
    Close;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ClientSocket1.Address := PChar(e_ip.text);
    if not ClientSocket1.Active then ClientSocket1.Active := true;
    //ClientSocket1.Open;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    ClientSocket1.Active := false;
    ClientSocket1.close;
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    ClientSocket1.Socket.SendText(e_command.text);
    sb.SimpleText := 'Äàííûå îòïðàâëåíû';
    end;



    Соединение происходит нормально, а вот когда посылаю команду, то на стороне клиента выдается такая ошибка: Asynchronous socket error 10053, а на стороне сервера такая: Windows socket error: A request to send or receive data was disallowed because is socket not connected and (when sending on a datagram socket using a sendto call) no adress was supplied (10057), on "API" recv. Как это можно исправить ? В чем проблема ?

    Спасибо огромное за помощь.
  • Сергей М. © (02.09.08 09:11) [1]
    Button3 тобой нажимается ПОСЛЕ того как отработает метод ClientSocket1Connect или ДО ?
  • Сергей М. © (02.09.08 09:22) [2]

    > For j := 0 to ServerSocket1.Socket.ActiveConnections - 1
    > do
    >  if ServerSocket1.Socket.Connections[j].SocketHandle <>
    > Socket.SocketHandle then
    >   if i = 'status' then ServerSocket1.Socket.Connections[j].
    > SendText('Ok. Connected. Listenning.');


    Вот эта логика мне вообще не понятна.

    Один из активных клиентов спросил у сервера "Покажи мне свой свой статус", а сервер получив запрос начинает рассылать свой статус всем кому угодно, только не тому кто его запросил ..
  • Slym © (02.09.08 11:49) [3]
    Сергей М. ©   (02.09.08 9:22) [2]
    Вот эта логика мне вообще не понятна.

    Эта логика содрана либо из http://pda.delphimaster.net/?id=1219864648&n=4 либо из статьи по которой тот топик писался
  • Slym © (02.09.08 11:50) [4]
    Сергей М. ©   (02.09.08 9:22) [2]
    И кстати я не понял почему я стал ниже?
  • Сергей М. © (02.09.08 12:27) [5]

    > Slym ©   (02.09.08 11:50) [4]


    > почему я стал ниже?


    Ну на момент [19]-го поста, где ты был окрещен "чуваком выше", твой пост, где ты сказал про "у меня все работает" и на который сослался автор, действительно был выше по тексту топика)
  • Slym © (02.09.08 13:21) [6]
    Сергей М. ©   (02.09.08 12:27) [5]
    а я подумал что ты меня обидеть пытаешься... мол по какой то причине "падаю" в твоем "рейтинге"
  • Сергей М. © (02.09.08 13:36) [7]

    > Slym ©   (02.09.08 13:21) [6]


    Ни в коем разе)

    Даже наоборот - в "пацанском" рейтинге Автора ты им поднят до высокого звания "чувака", а это дорогого стоит, особенно когда "выше")
  • Colonel (02.09.08 19:10) [8]
    После.

    > Button3 тобой нажимается ПОСЛЕ того как отработает метод
    > ClientSocket1Connect или ДО ?
  • Colonel (02.09.08 19:11) [9]
    Да, оттуда.

    > Slym ©
    > Эта логика содрана либо из http://www.delphimaster.ru/cgi-
    > bin/http://pda.delphimaster.net/?id=1219864648&n=4 либо из статьи по которой
    > тот топик писался
  • Сергей М. © (02.09.08 19:31) [10]
    А зачем вообще что-то сдирать ?

    Что мешает творить "с нуля" ?
  • Colonel (03.09.08 00:44) [11]
    Странные у Вас вопросы Сергей ... А зачем Вы спите ? А зачем Вы едите ? А зачем Вы вообще живете ? А зачем Вы ходите ? Зачем Вы одеваетесь ? Если образно выражаться, все Вы это сдираете, или же хотите сказать, что Вы сами придумали сон, сами придумываете и выращиваете новые культуры картофеля, пшеницы и пр ... Как говорил один человек, и, я склонен ему верить: если человек умный, то он никогда не будет "опускать" тупого, а наоборот будет помогать ему - чтобы привнести свет в его темную голову. И, вместо того чтобы помочь разобраться, дайть дельный совет - Вы просто задаете глупые вопросы.

    > Сергей М. ©   (02.09.08 19:31) [10]
    > А зачем вообще что-то сдирать ?


    А мешает творить с нуля отсутствие знаний необходимых и отсутствие времени на изучение вопроса (на данный момент времени). Как я думал, для этого и существуют тематические форумы - где люди помогают друг-другу, а не поносят слабых и беззащитных.

    > Сергей М. ©   (02.09.08 19:31) [10]
    >
    > Что мешает творить "с нуля" ?
    >
  • Slym © (03.09.08 04:47) [12]
    Colonel   (01.09.08 21:17)
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
    Socket: TCustomWinSocket);
    var
    j : integer;
    begin
    i := ServerSocket1.Socket.ReceiveText;

    всего навсего убрать жирное :)
  • Colonel (03.09.08 06:05) [13]
    Огромное Вам человеческое спасибо. Был бы Вам очень признателен, если бы Вы пояснили, почему я так сделал по Вашей подсказке и все заработало ?

    И еще вопрос, как мне сделать так, чтобы при возникновении ошибки у меня не вылетали окошки, а ошибка эта отображалась в статус баре ? Как я понимаю, здесь нужно отлавливать исключения, только вот как это сделать ? И какие коды ошибок отлавливать.

    Спасибо.
  • Slym © (03.09.08 06:44) [14]
    ServerSocket1.Socket - cлушающий сокет и его роль только слушать и ацептить соединение в другой сокет который
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
    Socket: TCustomWinSocket);
    им и следуе пользоваться для чтения/записи

    Colonel   (03.09.08 6:05) [13]
    не вылетали окошки

    procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
    ErrorEvent: TErrorEvent; var ErrorCode: Integer);

    ErrorCode:=0;-ошибка не вылезет... НО! под отладчиком ты ее всеравно увидишь
  • Slym © (03.09.08 06:52) [15]
    Дополнение к протоколу:
    1. добавь команду - ? или help
    и в ответ верни список команд
    2. увы с телнетом твоя прога работать не будет, т.к. ввод посимвольный, а ты ввод не накапливаешь
    3. if i = 'status' then - сделай раньше For j := 0 to ...
  • Colonel (03.09.08 07:31) [16]
    Тоже не спите по ночам ))) Нет, мне как раз нужно отлавливать ошибки, т.е, если я правильно Вас понял, то если я поставлю ErrorCode := 0 - то не будут появляться системные окна с ошибками, но, как мне передать саму ошибку и ее текст в статус бар тогда ?

    > ErrorCode:=0;-ошибка не вылезет... НО! под отладчиком ты
    > ее всеравно увидишь


    А это к чему  - 1 пункт? Хм ... По поводу телнета вообще не думал, просто пытаюсь решить одну проблему с подвисанием удаленной машины, вот и решил попробовать с написания проги подобной. А в 3 пункте зачем ставить цикл ?

    > Дополнение к протоколу:
    > 1. добавь команду - ? или help
    > и в ответ верни список команд
    > 2. увы с телнетом твоя прога работать не будет, т.к. ввод
    > посимвольный, а ты ввод не накапливаешь
    > 3. if i = 'status' then - сделай раньше For j := 0 to ..
    > .


    Спасибо за помощь. Очень мне помогли Ваши советы.
  • Colonel (03.09.08 07:51) [17]
    И еще такой вопрос, если на удаленный комп я посылаю logoff, программа перестает работать или же я смогу опять подключиться к ней ? Если она работает, то я так понимаю, что мне нужно удаленно залогиниться, как мне это сделать ?

    Спасибо.
  • Сергей М. © (03.09.08 08:55) [18]

    > программа перестает работать или же я смогу опять подключиться
    > к ней ?


    Перестает.


    > мне нужно удаленно залогиниться, как мне это сделать


    К Сетям это отношения не имеет.

    p.s.
    Вникни в [15] п.2
  • Slym © (03.09.08 09:29) [19]
    Colonel   (03.09.08 7:51) [17]
    Сервис напиши...
    Colonel   (03.09.08 7:31) [16]
    с подвисанием удаленной машины

    :) а как она перегрузится есле она висит?
    не лучше найти и устранить причину подвисания?
  • Сергей М. © (03.09.08 09:34) [20]

    > По поводу телнета вообще не думал


    А дело даже не в телнете.
    Просто использование любого телнет-клиента наглядно продемонстрирует, мягко говоря, недостаток в реализованной тобой логике)
  • Colonel (03.09.08 10:03) [21]
    Хм ... А при чем здесь моя логика ? Пробовал я и телнет и ssh, для этих целей юзал putty, но, это не помогло решить мою проблему, поэтому решил попробовать написать подобную прогу.


    > Сергей М. ©   (03.09.08 09:34) [20]
    >
    > А дело даже не в телнете.
    > Просто использование любого телнет-клиента наглядно продемонстрирует,
    >  мягко говоря, недостаток в реализованной тобой логике)


    Суть в том, что висит RDP (либо сессия подвисает, либо включается блокировка атоматическаяю При чем удаленно не работает даже logoff - при попытке сделать logoff RDP виснет), т.к я делаю разные операции удаленно через RDP, то, когда он висит - единственный выход - ребутнуть машину - чтобы заново подключиться.

    > Slym ©   (03.09.08 09:29) [19]
    >
    > :) а как она перегрузится есле она висит?
    > не лучше найти и устранить причину подвисания?
  • Сергей М. © (03.09.08 10:12) [22]

    > при чем здесь моя логика ?


    Притом что она ошибочна.
    Как минимум в части отсутствия напрочь аккумулирования принимаемых данных.
  • Colonel (03.09.08 10:24) [23]
    Сергей, видимо Вы даже не читали [11]. Исходя из этого я могу высказать тоже самое и о Вашей логике.

    > Сергей М. ©   (03.09.08 10:12) [22]
    > Как минимум в части отсутствия напрочь аккумулирования принимаемых
    > данных.
  • Сергей М. © (03.09.08 10:28) [24]

    > Colonel   (03.09.08 10:24) [23]


    Ну-ну.

    Продолжай в том же духе.

    Замечу лишь, что сервер не работает (и не будет работать при таком подходе) у тебя)
  • Slym © (03.09.08 10:53) [25]
    Colonel   (03.09.08 10:03) [21]
    Суть в том, что висит RDP

    что за сервер (ОС)? сколько одновременных сессий. сколько процессоров в серваке?
    Colonel   (03.09.08 10:03) [21]
    Хм ... А при чем здесь моя логика ? Пробовал я и телнет и ssh, для этих целей юзал putty, но, это не помогло решить мою проблему, поэтому решил попробовать написать подобную прогу.

    просто к твоему серверу придется писать клиент... хотя можно в качестве клиента пользовать телнет: открыл телнет, подключился, набрал ребут... Но чтение у тебя без накопрения и в
    ServerSocket1ClientRead ReceiveText вернет тебе последовательно
    r
    e
    b
    o
    o
    t
    а не то что ты ожидаеш - reboot
  • Anatoly Podgoretsky © (03.09.08 11:04) [26]
    > Colonel  (03.09.2008 10:24:23)  [23]

    Есть разница - не работает у ТЕБЯ
  • Colonel (03.09.08 11:09) [27]
    О, да Вы еще и невоспитанный человек, интересно что же за высшее образование такое и где Вы его получали ...

    А сервер как раз-таки работает, и, если бы Вы внимательно читали посты, то вопрос уже совсем в другом [13]-[17], в особенности интересует [16], [17].


    > Сергей М. ©   (03.09.08 10:28) [24]
    >
    > Ну-ну.
    >
    > Продолжай в том же духе.
    >
    > Замечу лишь, что сервер не работает (и не будет работать
    > при таком подходе) у тебя)


    Клиент уже написан и он выполняет то, что нужно, вопрос уже в другом уважаемый Slym [13]-[17], в особенности интересует [16], [17]. Не знаю, почему Вы решили что не будет работать (Вам видимо виднее), но, у меня все работает, при отправлении команды ребут - машина перегружается. И, я вроде нигде не писал, что это сервер. Это обычный PC с лицензионной (правда корявой, может поэтому там столько проблем) WinXP. И, как я уже писал выше - телнет не помогает, не могу понять почему, хотя коннект происходит и с putty - тоже самое (хотя нет, вру, пару раз было такое, что я подключался через putty, как только посылал shutdown -r - соединение тоже висло, я закрывал сессию, логинился снова - ситуация повторялась).


    > Slym ©
    > что за сервер (ОС)? сколько одновременных сессий. сколько
    > процессоров в серваке?
    > просто к твоему серверу придется писать клиент... хотя можно
    > в качестве клиента пользовать телнет: открыл телнет, подключился,
    >  набрал ребут... Но чтение у тебя без накопрения и в
    > ServerSocket1ClientRead ReceiveText вернет тебе последовательно
    > r
    > e
    > b
    > o
    > o
    > t
    > а не то что ты ожидаеш - reboot
  • Slym © (03.09.08 11:29) [28]
    Colonel   (03.09.08 11:09) [27]
    в особенности интересует [16], [17].

    в [19] - сервис...
    по теме телнета: добавляешь новую команду в сервер - переписываешь клиента, а с телнетом тупо новую команду руками пишешь и воркает...
    я не говорю что нерабочий вариант, но кошернее вариант с телнетом - протокол то текстовый
  • Сергей М. © (03.09.08 11:34) [29]

    > Не знаю, почему Вы решили что не будет работать


    Ты и знать не хочешь)
    Иначе давно бы спросил.


    > я вроде нигде не писал, что это сервер. Это обычный PC


    А никому и не интересно что там у тебя за PC.

    Речь идет об принципах и особенностях работы поточно-ориентированного TCP, коим ты решил воспользоваться для решения задачи.

    В условиях глоб.сети нет никакой гарантии получения принимающей стороной дейтаграмм в том виде, в котором ты ожидаешь.
  • Сергей М. © (03.09.08 11:50) [30]
    Ну а то что ты еще и [2] проигнорировал, лишний раз подтверждает, что с логикой у тебя дело совсем плохо)
  • Colonel (03.09.08 12:08) [31]
    А подробнее с этого места можно: хм ... сервис, его еще нужно написать (буду признателен за любую инфу как это сделать на Delphi), потом, чтобы его писать, нужно озадачиться тем, как он будет работать и какие задачи он будет выполнять (опять же, я пока с трудом себе представляю это - буду признателен за любую помощь).

    По серверу: какую команду я должен добавить ? И что изменять в клиенте ? И, какую писать команду руками ? Если речь идет про "чистый" телнет, то я уже писал, что он не помогает ...


    > Slym ©   (03.09.08 11:29) [28]
    > в [19] - сервис...
    > по теме телнета: добавляешь новую команду в сервер - переписываешь
    > клиента, а с телнетом тупо новую команду руками пишешь и
    > воркает...
    > я не говорю что нерабочий вариант, но кошернее вариант с
    > телнетом - протокол то текстовый


    Сергей, я уже написал, что приложение работает. Теперь мне нужно отловить исключения и сделать так, чтобы не окна выскакивали, а сообщения из исключений передавались в статус бар. И если происходит logoff, то существует ли возможность опять залогиниться именно из моей программы и как это сделать ...

    По поводу датаграмм ничего не скажу, здесь я не очень силен. Но, спасибо за замечание.


    > Сергей М. ©   (03.09.08 11:34) [29]
    >
    > Ты и знать не хочешь)
    > Иначе давно бы спросил.
    >
    > А никому и не интересно что там у тебя за PC.
    >
    > Речь идет об принципах и особенностях работы поточно-ориентированного
    > TCP, коим ты решил воспользоваться для решения задачи.
    >
    > В условиях глоб.сети нет никакой гарантии получения принимающей
    > стороной дейтаграмм в том виде, в котором ты ожидаешь.
  • Slym © (03.09.08 12:24) [32]
    program CmdDefSckt;

    {$APPTYPE CONSOLE}

    uses
     SysUtils,ScktComp,WinSock;

    type
     TServerClientThreadEx=class(TServerClientThread)
     private
       Buf:string;
     protected
       procedure ClientExecute; override;
       function WaitForData(Timeout: Longint): Boolean;
       function RecvLn:string;
       procedure SendLn(const Str:string);
       procedure ProcessCmd(const CmdStr:string);
     public
     end;

    function TServerClientThreadEx.WaitForData(Timeout: Longint): Boolean;
    var
     FDSet: TFDSet;
     TimeVal: TTimeVal;
    begin
     TimeVal.tv_sec := Timeout div 1000;
     TimeVal.tv_usec := (Timeout mod 1000) * 1000;
     FD_ZERO(FDSet);
     FD_SET(ClientSocket.SocketHandle, FDSet);
     Result := select(0, @FDSet, nil, nil, @TimeVal) > 0;
    end;

    function TServerClientThreadEx.RecvLn:string;
    var i:integer;
    begin
     while ClientSocket.Connected do
     begin
       if not WaitForData(30000) then raise Exception.Create('Protocol: timeout');
       Buf:=Buf+ClientSocket.ReceiveText;
       if length(Buf)>256 then raise Exception.Create('Protocol: long string');
       i:=pos(#13#10,Buf);
       if i>0 then
       begin
         result:=copy(Buf,1,i-1);
         delete(Buf,1,i+1);
         break;
       end;
     end;
    end;

    procedure TServerClientThreadEx.SendLn(const Str:string);
    begin
     ClientSocket.SendText(Str);
     ClientSocket.SendText(#13#10);
    end;

    procedure TServerClientThreadEx.ProcessCmd(const CmdStr: string);
    begin
     if CmdStr='?' then
       SendLn('reboot');
    end;

    procedure TServerClientThreadEx.ClientExecute;
    var CmdStr:string;
    begin
     try
       while (not Terminated) and (ClientSocket.Connected) do
       begin
         CmdStr:=RecvLn;
         if length(CmdStr)>0 then
         begin
           writeln('ProcessCmd ',ClientSocket.RemoteAddress,':',ClientSocket.RemotePort,'- ',CmdStr);
           ProcessCmd(CmdStr);
         end;
       end;
     except
       on e: exception do
         writeln('Error: '+e.Message);
     end;
    end;

    procedure GetThread(Self:TObject;Sender: TObject;ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread);
    begin
     writeln('GetThreadEvent ',ClientSocket.RemoteAddress,':',ClientSocket.RemotePort);
     SocketThread:=TServerClientThreadEx.Create(false,ClientSocket);
    end;

    function Proc2Method(Code, Data: Pointer):TMethod;
    begin
     result.Code:=Code;
     result.Data:=Data;
    end;

    var Server:TServerSocket;
    begin
    Server:=TServerSocket.Create(nil);
    try
      Server.ServerType:=stThreadBlocking;
      Server.Port:=19;
      Server.OnGetThread:=TGetThreadEvent(Proc2Method(@GetThread,Server));
      Server.Open;
      while Server.Active do Sleep(100);
    finally
      Server.Free;
    end;
    end.



    обращаться так
    telnet 127.0.0.1 19
    reboot

  • Сергей М. © (03.09.08 12:31) [33]

    > уже написал, что приложение работает


    Сегодня работает, а завтра перестанет.
    Что будешь делать ?


    > существует ли возможность опять залогиниться именно из моей
    > программы


    Существует.
    Но пример, на который ты сделал ставку, такой возможности не даст - он использует оконные сообщения текущего десктопа.
  • Colonel (03.09.08 13:20) [34]
    Ого. А можно вкратце в целом по приложению и по каждой процедуре и функции.

    Спасибо.


    > Slym ©
    >
    > обращаться так
    > telnet 127.0.0.1 19
    > reboot
    >


    Буду искать другой способ или разбираться почему этот перестал работать.

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

    Спасибо.

    > Сергей М. ©   (03.09.08 12:31) [33]
    >
    > Сегодня работает, а завтра перестанет.
    > Что будешь делать ?
    >
    > Существует.
    > Но пример, на который ты сделал ставку, такой возможности
    > не даст - он использует оконные сообщения текущего десктопа.
    >
  • Сергей М. © (03.09.08 13:25) [35]

    > Буду искать другой способ или разбираться почему этот перестал
    > работать


    Зачем же его искать после того как на грабли уже наступил, если это можно предотвратить прямо сейчас, когда проект находится пока еще в пуберантном периоде ?


    > пример, на который нужно сделать ставку для решения моей
    > задачи


    Какой конкретно ?
  • Slym © (03.09.08 13:29) [36]
    Colonel   (03.09.08 13:20) [34]
    Ого. А можно вкратце в целом по приложению и по каждой процедуре и функции.

    Код напишу, а вот с документацией пошлю лесом... ну не люблю я бумажки :(
    1. это блокирующий режим сокета (многопоточный)
    2. TServerClientThreadEx - объект-поток для каждого соединения вся работа в ClientExecute
    3.
    WaitForData - ожидание данных
    RecvLn - чтение строки до перевода строки (интер в народе)
    SendLn - посыл строки + перевода строки
    ProcessCmd - тута обрабатывай команды
    4. Buf:string; - буфер накопления

    тебе содрать и добавить обработку в ProcessCmd(const CmdStr: string);
  • Colonel (03.09.08 13:32) [37]
    Да это никакой не проект, а просто я уже "задолбал" своими частыми звонками и просьбами перегрузить машину секретаршу. Поэтому и решил написать програмку для таких целей.

    Ну, если Вы написали что я неправильно сделал ставку на тот пример, тогда приведите пример, в котором будет все правильно и в котором я смогу выполнить нужные мне операции.


    > Сергей М. ©   (03.09.08 13:25) [35]
    >
    > Зачем же его искать после того как на грабли уже наступил,
    >  если это можно предотвратить прямо сейчас, когда проект
    > находится пока еще в пуберантном периоде ?
    >
    > Какой конкретно ?
  • Сергей М. © (03.09.08 13:48) [38]

    > Colonel   (03.09.08 13:32) [37]


    > приведите пример


    Пример уже приведен, см. [32].

    Ключевые отличия - блокирующий режим без оконных нотификаций, реализован простейший аккумулятор/парсер вх.потока.


    > я уже "задолбал" своими частыми звонками и просьбами перегрузить
    > машину секретаршу. Поэтому и решил написать програмку для
    > таких целей


    Твоя фамилия случаем не Кулибин ?)

    Во-первых, проблемами "виса" системы системы в целом и RDP-сервиса в частности должен заниматься админ, а не программист.

    Во-вторых, на RDP свет клином не сошелся.
  • Colonel (03.09.08 13:58) [39]
    А подробнее можно про ключевые отличия? Как мне организовать залогинивание на PC ????

    Нет, не Кулибин )

    Если бы это просто было так, то я бы даже и не зашел сюда. Админ меня давно послал с текстом - тебе это нужно, ты этим и занимайся - хоть катайся каждые полчаса сюда и ребутай машину. Да и поставить туда ничего нельзя. Вот и остается два выхода: либо туда кататься каждый раз, либо найти выход с использование подвисающего RDP. Вот такие вот дела. Я пошел по пути наименьшего сопротивления для меня....


    > Сергей М. ©
    > Ключевые отличия - блокирующий режим без оконных нотификаций,
    >  реализован простейший аккумулятор/парсер вх.потока.
    >
    > Твоя фамилия случаем не Кулибин ?)
    >
    > Во-первых, проблемами "виса" системы системы в целом и RDP-
    > сервиса в частности должен заниматься админ, а не программист.
    >
    >
    > Во-вторых, на RDP свет клином не сошелся.
  • Сергей М. © (03.09.08 14:11) [40]

    > Как мне организовать залогинивание на PC


    Этот вопрос выходит за рамки тематики форума "Сети", я тебе об этом уже сказал, но ты упорно не реагируешь.

    И, кстати, как же ты тогда собрался использовать свое творение, если


    > поставить туда ничего нельзя


    ?
  • Colonel (03.09.08 14:20) [41]
    К какой же тогда интересно тематике это относится ?


    > Этот вопрос выходит за рамки тематики форума "Сети", я тебе
    > об этом уже сказал, но ты упорно не реагируешь.
    >
    > И, кстати, как же ты тогда собрался использовать свое творение,
    >  если



    Заливаю файл по FTP, потом через RDP запускаю его. И все.

    > ?
  • Сергей М. © (03.09.08 14:29) [42]

    > К какой же тогда интересно тематике это относится ?


    К любой другой.

    Чем, собственно, локальный релогин отличается от нелокального ?
    Ничем. Разница лишь в том, что программой, осуществляющей такие манипуляции, можно управлять "ручками", если программа локальна, или удаленными "ручками", если программа не локальна. А уж таинства самих манипуляций скрываются за соответствующим WinAPI.


    > Заливаю файл по FTP, потом через RDP запускаю его. И все


    А говоришь "поставить ничего нельзя")

    Нехорошо вводить в заблуждение)
  • Colonel (03.09.08 14:49) [43]
    Сергей, если Вы не знаете / не можете / не хотите что-либо подсказать / показать по этой тематике - зачем тогда писать ?

    Ставить именно что нельзя (имеется ввиду инсталляция), а по FTP залить и запустить простое приложение, которое запускается без установки - можно.

    > Сергей М. ©   (03.09.08 14:29) [42]
    >
    > К любой другой.
    >
    > А говоришь "поставить ничего нельзя")
    >
    > Нехорошо вводить в заблуждение)
  • Anatoly Podgoretsky © (03.09.08 15:21) [44]
    > Colonel  (03.09.2008 13:58:39)  [39]

    У тебя админ философ-пофигист.
    А RDP зависающий это твоя проблема, у меня не зависающий
  • Сергей М. © (03.09.08 15:25) [45]

    > Colonel   (03.09.08 14:49) [43]


    > зачем тогда писать ?


    Затем чтобы ты учился отделять мух от котлет.
  • Colonel (03.09.08 16:02) [46]
    Я бы выразился по-другому насчет того админа ...

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


    > Anatoly Podgoretsky ©   (03.09.08 15:21) [44]
    > У тебя админ философ-пофигист.
    > А RDP зависающий это твоя проблема, у меня не зависающий


    Еще есть идеи господа ? Ну помогите мне ....
  • Сергей М. © (03.09.08 16:31) [47]

    > единственная машина, с которой у меня возникли такие проблемы


    А ты что вообще делаешь на том удаленном раб.столе ?

    Что ты там забыл и почему админ отказывается содействовать тебе или хотя бы дать твоей уч.записи на том хосте права администрирования, чтобы ты мог полноценно и самомтоятельно решать требуемые тебе задачи ?

    Поясни ..
  • Colonel (03.09.08 23:34) [48]
    Настраиваю IP Office 500 для нужд абонентов.
  • Сергей М. © (04.09.08 08:35) [49]

    > Colonel   (03.09.08 23:34) [48]


    Хм ..

    А что, разве нет возможности прямо со своего хоста, минуя эту самую RDP-"прокладку", достучаться до станции по Ethernet ?
  • Slym © (04.09.08 10:10) [50]
    Это пипец... пользовать RDP для настройки IP АТС... зачем прокладка?
    если маршрутизации к ней нет, то поставь простенький портмапер на твой "сервер" и через него и лазь...
  • Сергей М. © (04.09.08 10:23) [51]

    > Slym ©   (04.09.08 10:10) [50]


    У них там, видимо, полный бардак в конторе: сапожник печет пироги, а пирожник (админ ихний) ни пироги не печет ни сапоги не тачает ..
  • Colonel (04.09.08 14:29) [52]
    Господа, Вы все правы и я уже пожалел что подписался на эту контору, но, увы, назад пути нет. Вот поэтому и приходится придумывать всякие ненужные проги для того, чтобы прежде всего себе облегчить хоть как-то жизнь ...

    Поэтому и прошу помощи ...
  • Сергей М. © (04.09.08 15:06) [53]
    Я ж тебе сказал - мухи отдельно, а котлеты отдельно !
    Что тебе до сих пор не понятно ?
    Отдельно на локальной машине создаешь и отлаживаешь модуль, ответственный за работу с логинами, рибутом и пр. (форум WinAPI), отдельно же на локальной и удаленной машинах отрабатываешь отдельный модуль, ответственный за транспорт произвольных данных по сети (форум Сети). И только потом их объединяешь эти две в целом непересекающиеся части в единый "организм".
  • Polevi © (04.09.08 21:24) [54]
    да, он отладит на локальной а потом в реале работать не будет..
    s:=Socket.ReceiveText;

    классика жанра
 
Конференция "Сети" » Проблема с приложением клиент-сервер [D7, WinXP]
Есть новые Нет новых   [134432   +19][b:0][p:0.005]