Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Проблема с приложением клиент-сервер   Найти похожие ветки 

 
Colonel   (2008-09-01 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 := "&#207;&#238;&#228;&#234;&#235;&#254;&#247;&#229;&#237;&#232;&#229; &#239;&#240;&#238;&#232;&#231;&#238;&#248;&#235;&#238; &#243;&#241;&#239;&#229;&#248;&#237;&#238;";
e_command.Visible := true;
end;

procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
 ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
sb.SimpleText := "&#207;&#240;&#238;&#232;&#231;&#238;&#248;&#235;&#224; &#238;&#248;&#232;&#225;&#234;&#224;";
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
sb.SimpleText := "&#202;&#235;&#232;&#229;&#237;&#242; &#238;&#242;&#234;&#235;&#254;&#247;&#229;&#237;";
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
 Socket: TCustomWinSocket);
begin
sb.SimpleText := "&#207;&#238;&#228;&#234;&#235;&#254;&#247;&#224;&#254;&#241;&#252; ...";
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 := "&#196;&#224;&#237;&#237;&#251;&#229; &#238;&#242;&#239;&#240;&#224;&#226;&#235;&#229;&#237;&#251;";
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. Как это можно исправить ? В чем проблема ?

Спасибо огромное за помощь.


 
Сергей М. ©   (2008-09-02 09:11) [1]

Button3 тобой нажимается ПОСЛЕ того как отработает метод ClientSocket1Connect или ДО ?


 
Сергей М. ©   (2008-09-02 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 ©   (2008-09-02 11:49) [3]

Сергей М. ©   (02.09.08 9:22) [2]
Вот эта логика мне вообще не понятна.

Эта логика содрана либо из http://delphimaster.net/view/6-1219864648/ либо из статьи по которой тот топик писался


 
Slym ©   (2008-09-02 11:50) [4]

Сергей М. ©   (02.09.08 9:22) [2]
И кстати я не понял почему я стал ниже?


 
Сергей М. ©   (2008-09-02 12:27) [5]


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


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


Ну на момент [19]-го поста, где ты был окрещен "чуваком выше", твой пост, где ты сказал про "у меня все работает" и на который сослался автор, действительно был выше по тексту топика)


 
Slym ©   (2008-09-02 13:21) [6]

Сергей М. ©   (02.09.08 12:27) [5]
а я подумал что ты меня обидеть пытаешься... мол по какой то причине "падаю" в твоем "рейтинге"


 
Сергей М. ©   (2008-09-02 13:36) [7]


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


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

Даже наоборот - в "пацанском" рейтинге Автора ты им поднят до высокого звания "чувака", а это дорогого стоит, особенно когда "выше")


 
Colonel   (2008-09-02 19:10) [8]

После.

> Button3 тобой нажимается ПОСЛЕ того как отработает метод
> ClientSocket1Connect или ДО ?


 
Colonel   (2008-09-02 19:11) [9]

Да, оттуда.

> Slym ©
> Эта логика содрана либо из http://www.delphimaster.ru/cgi-
> bin/forum.pl?id=1219864648&n=4 либо из статьи по которой
> тот топик писался


 
Сергей М. ©   (2008-09-02 19:31) [10]

А зачем вообще что-то сдирать ?

Что мешает творить "с нуля" ?


 
Colonel   (2008-09-03 00:44) [11]

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

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


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

> Сергей М. ©   (02.09.08 19:31) [10]
>
> Что мешает творить "с нуля" ?
>


 
Slym ©   (2008-09-03 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   (2008-09-03 06:05) [13]

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

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

Спасибо.


 
Slym ©   (2008-09-03 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 ©   (2008-09-03 06:52) [15]

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


 
Colonel   (2008-09-03 07:31) [16]

Тоже не спите по ночам ))) Нет, мне как раз нужно отлавливать ошибки, т.е, если я правильно Вас понял, то если я поставлю ErrorCode := 0 - то не будут появляться системные окна с ошибками, но, как мне передать саму ошибку и ее текст в статус бар тогда ?

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


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

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


Спасибо за помощь. Очень мне помогли Ваши советы.


 
Colonel   (2008-09-03 07:51) [17]

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

Спасибо.


 
Сергей М. ©   (2008-09-03 08:55) [18]


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


Перестает.


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


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

p.s.
Вникни в [15] п.2


 
Slym ©   (2008-09-03 09:29) [19]

Colonel   (03.09.08 7:51) [17]
Сервис напиши...
Colonel   (03.09.08 7:31) [16]
с подвисанием удаленной машины

:) а как она перегрузится есле она висит?
не лучше найти и устранить причину подвисания?


 
Сергей М. ©   (2008-09-03 09:34) [20]


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


А дело даже не в телнете.
Просто использование любого телнет-клиента наглядно продемонстрирует, мягко говоря, недостаток в реализованной тобой логике)


 
Colonel   (2008-09-03 10:03) [21]

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


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


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

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


 
Сергей М. ©   (2008-09-03 10:12) [22]


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


Притом что она ошибочна.
Как минимум в части отсутствия напрочь аккумулирования принимаемых данных.


 
Colonel   (2008-09-03 10:24) [23]

Сергей, видимо Вы даже не читали [11]. Исходя из этого я могу высказать тоже самое и о Вашей логике.

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


 
Сергей М. ©   (2008-09-03 10:28) [24]


> Colonel   (03.09.08 10:24) [23]


Ну-ну.

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

Замечу лишь, что сервер не работает (и не будет работать при таком подходе) у тебя)


 
Slym ©   (2008-09-03 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 ©   (2008-09-03 11:04) [26]

> Colonel  (03.09.2008 10:24:23)  [23]

Есть разница - не работает у ТЕБЯ


 
Colonel   (2008-09-03 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 ©   (2008-09-03 11:29) [28]

Colonel   (03.09.08 11:09) [27]
в особенности интересует [16], [17].

в [19] - сервис...
по теме телнета: добавляешь новую команду в сервер - переписываешь клиента, а с телнетом тупо новую команду руками пишешь и воркает...
я не говорю что нерабочий вариант, но кошернее вариант с телнетом - протокол то текстовый


 
Сергей М. ©   (2008-09-03 11:34) [29]


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


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


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


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

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

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


 
Сергей М. ©   (2008-09-03 11:50) [30]

Ну а то что ты еще и [2] проигнорировал, лишний раз подтверждает, что с логикой у тебя дело совсем плохо)


 
Colonel   (2008-09-03 12:08) [31]

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

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


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


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

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


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


 
Slym ©   (2008-09-03 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


 
Сергей М. ©   (2008-09-03 12:31) [33]


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


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


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


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


 
Colonel   (2008-09-03 13:20) [34]

Ого. А можно вкратце в целом по приложению и по каждой процедуре и функции.

Спасибо.


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


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

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

Спасибо.

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


 
Сергей М. ©   (2008-09-03 13:25) [35]


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


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


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


Какой конкретно ?


 
Slym ©   (2008-09-03 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   (2008-09-03 13:32) [37]

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

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


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


 
Сергей М. ©   (2008-09-03 13:48) [38]


> Colonel   (03.09.08 13:32) [37]


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


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

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


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


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

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

Во-вторых, на RDP свет клином не сошелся.


 
Colonel   (2008-09-03 13:58) [39]

А подробнее можно про ключевые отличия? Как мне организовать залогинивание на PC ????

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

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


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


 
Сергей М. ©   (2008-09-03 14:11) [40]


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


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

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


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


?


 
Colonel   (2008-09-03 14:20) [41]

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


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



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

> ?


 
Сергей М. ©   (2008-09-03 14:29) [42]


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


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

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


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


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

Нехорошо вводить в заблуждение)


 
Colonel   (2008-09-03 14:49) [43]

Сергей, если Вы не знаете / не можете / не хотите что-либо подсказать / показать по этой тематике - зачем тогда писать ?

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

> Сергей М. ©   (03.09.08 14:29) [42]
>
> К любой другой.
>
> А говоришь "поставить ничего нельзя")
>
> Нехорошо вводить в заблуждение)


 
Anatoly Podgoretsky ©   (2008-09-03 15:21) [44]

> Colonel  (03.09.2008 13:58:39)  [39]

У тебя админ философ-пофигист.
А RDP зависающий это твоя проблема, у меня не зависающий


 
Сергей М. ©   (2008-09-03 15:25) [45]


> Colonel   (03.09.08 14:49) [43]


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


Затем чтобы ты учился отделять мух от котлет.


 
Colonel   (2008-09-03 16:02) [46]

Я бы выразился по-другому насчет того админа ...

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


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


Еще есть идеи господа ? Ну помогите мне ....


 
Сергей М. ©   (2008-09-03 16:31) [47]


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


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

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

Поясни ..


 
Colonel   (2008-09-03 23:34) [48]

Настраиваю IP Office 500 для нужд абонентов.


 
Сергей М. ©   (2008-09-04 08:35) [49]


> Colonel   (03.09.08 23:34) [48]


Хм ..

А что, разве нет возможности прямо со своего хоста, минуя эту самую RDP-"прокладку", достучаться до станции по Ethernet ?


 
Slym ©   (2008-09-04 10:10) [50]

Это пипец... пользовать RDP для настройки IP АТС... зачем прокладка?
если маршрутизации к ней нет, то поставь простенький портмапер на твой "сервер" и через него и лазь...


 
Сергей М. ©   (2008-09-04 10:23) [51]


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


У них там, видимо, полный бардак в конторе: сапожник печет пироги, а пирожник (админ ихний) ни пироги не печет ни сапоги не тачает ..


 
Colonel   (2008-09-04 14:29) [52]

Господа, Вы все правы и я уже пожалел что подписался на эту контору, но, увы, назад пути нет. Вот поэтому и приходится придумывать всякие ненужные проги для того, чтобы прежде всего себе облегчить хоть как-то жизнь ...

Поэтому и прошу помощи ...


 
Сергей М. ©   (2008-09-04 15:06) [53]

Я ж тебе сказал - мухи отдельно, а котлеты отдельно !
Что тебе до сих пор не понятно ?
Отдельно на локальной машине создаешь и отлаживаешь модуль, ответственный за работу с логинами, рибутом и пр. (форум WinAPI), отдельно же на локальной и удаленной машинах отрабатываешь отдельный модуль, ответственный за транспорт произвольных данных по сети (форум Сети). И только потом их объединяешь эти две в целом непересекающиеся части в единый "организм".


 
Polevi ©   (2008-09-04 21:24) [54]

да, он отладит на локальной а потом в реале работать не будет..
s:=Socket.ReceiveText;

классика жанра



Страницы: 1 2 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.66 MB
Время: 0.05 c
2-1272519215
wwictor
2010-04-29 09:33
2010.08.27
Как подключится к серверу mySQL и добавить запись?


2-1266564186
oleg1963lora
2010-02-19 10:23
2010.08.27
Как маскировать исключение EDatabaseError?


2-1268205413
Вася
2010-03-10 10:16
2010.08.27
TCategoryPanel


15-1263768328
Германн
2010-01-18 01:45
2010.08.27
Темы Windows XP


2-1273841049
RGV
2010-05-14 16:44
2010.08.27
WebBrowser.