Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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


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

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


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


?



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

Форум: "Сети";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.06 c
15-1265873696
12
2010-02-11 10:34
2010.08.27
Начать писать на php.


4-1235478756
EgorovAlex
2009-02-24 15:32
2010.08.27
Можно ли передавать из одного потока в другой хендл открытого


15-1272137380
antonn
2010-04-24 23:29
2010.08.27
Цитата из "Искусство войны"


15-1267724306
Kerk
2010-03-04 20:38
2010.08.27
Working Effectively with Legacy Code


6-1216982606
Uzer32.dll
2008-07-25 14:43
2010.08.27
Доступ к запароленым шарам





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