Главная страница
    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


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

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


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


?


 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.64 MB
Время: 0.067 c
15-1265296513
БарЛог
2010-02-04 18:15
2010.08.27
Утилизация электроники в Китае =)


2-1272489700
yagluboko
2010-04-29 01:21
2010.08.27
ошибка периода компиляции


15-1273133655
Дмитрий С
2010-05-06 12:14
2010.08.27
Защита переменных окружения


11-1216289923
BMouradov
2008-07-17 14:18
2010.08.27
потеря фокуса формы


2-1266389680
@!!ex
2010-02-17 09:54
2010.08.27
TMediaPlayer AV при повторном открытии файла





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