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

Вниз

Смена портов NMMsg и NMStrm   Найти похожие ветки 

 
Andrew2   (2002-08-05 13:03) [0]

Не хотят у меня порты меняться на этих компонентах. Как скомпилиш например с тем что по умолчанию 6711 так и работают. Присваиваю другой номер - connection failed, возвращаю родной - снова нормально. Можно конечно с другим компилировать, но надо-бы в процессе работы как-то менять, чтоб к другими такими-же програмками конектиться.
Спасибо.


 
Digitman ©   (2002-08-05 13:08) [1]

сервер на каком порту "слушает" ? Должен слушать на том же, попытку коннекта к которому осуществляет клиент


 
Andrew2   (2002-08-05 15:58) [2]

Меняю порты с обоих сторон. Когда возвращаю в исходное состояние - конект возобновляется.
(спасибо digitman за быстрый ответ, боюсь мой промежуток в 5 часов уже убил этот диалог :(


 
Andrew2   (2002-08-05 16:29) [3]

Мне тут даже советуют убивать и создавать заново эти компоненты уже с другими портами :)


 
Digitman ©   (2002-08-05 16:29) [4]

при смене порта на серверной стороне не забываешь вноыь активизировать его (сервер) ?


 
Andrew2   (2002-08-05 16:45) [5]

Не нашёл в структуре NMStrm активацию/деактивацию.
Попробовал disconnect перед сменой портов - не преуспел.


 
Digitman ©   (2002-08-05 17:19) [6]

TNMStrm не имеет отношения к серверной стороне : это - клиент.

Что используешь на серверной стороне ?


 
Andrew2   (2002-08-06 08:16) [7]

NMStrmServ


 
Andrew2   (2002-08-06 08:24) [8]

Это я для работы утилиту такую написал, где на моей машине клиент с NMMsg и NMStrmServ, а на другом конце агент с NMMSGServ и NMStrm. По MSG я управляю агентом, а он мне по STRM шлёт файлы. Возникла необходимость работать с несколькими агентами, а со сменой портов такая неприятность :(


 
Digitman ©   (2002-08-06 09:40) [9]

Приведи код.


 
Andrew2   (2002-08-06 10:05) [10]

Мой римоут менеджер запрашивает файл

procedure TForm1.Getfile1Click(Sender: TObject);
begin
LogFileName:=ListBox1.Items.Strings[ListBox1.ItemIndex];
NMMsg1.FromName := "file";
NMMsg1.PostIt(LogFileName);
MemoEvents.Lines.Add("Asking for file "+LogFileName);
end;

Агент отвечает

procedure TForm1.NMMSGServ1MSG(Sender: TComponent; const sFrom,
sMsg: String);
var
MyFStream: TFileStream;
f,f_old,f_update: Textfile;
sr,sr_old: TSearchRec;
flag,FileAttrs: Integer;
s,s2: string;
Bool:Boolean;
begin

if pos("file",sFrom)>0 then
begin
LogFileName:=Copy(sMsg,Pos(":",sMsg)+1,Length(sMsg)-Pos(":",sMsg));
EditLogFileName.Text:=LogFileName;
ListBoxFiles.ItemIndex:= ListBoxFiles.Items.IndexOf(LogFileName);
if (LogFileName="..") or isDir(LogFileName) then
begin
ListBoxFilesDblClick(Form1);
ReadList(CurrDir);
NMStrm1.FromName := "list:"+CurrDir;
MyFStream := TFileStream.Create("list.txt", fmOpenRead);
try
NMStrm1.PostIt(MyFStream);
finally
MyFStream.Free;
end;
MemoEvents.Lines.Add("list sent");
end
else
begin
NMStrm1.FromName := "file:"+LogFileName;
MyFStream := TFileStream.Create(LogFileName, fmOpenRead);
try
NMStrm1.PostIt(MyFStream);
finally
MyFStream.Free;
MemoEvents.Lines.Add("file sent");
MemoFile.Lines.LoadFromFile(LogFileName);
MemoFile.Lines.SaveToFile("Old_log.txt");
end;
end;
end;
end;

админ ловит файл

procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
var
c,f,i: integer;
MyFStream: TFileStream;
f_log,f_update: TextFile;
s: string;
begin
MemoEvents.Lines.Add("From :: "+sFrom);

if Pos("file",sFrom)>0 then
begin
LogFileName:=Copy(sFrom,Pos(":",sFrom)+1,Length(sFrom)-Pos(":",sFrom));
If FileExists(LogFileName) then DeleteFile(LogFileName);
MyFStream := TFileStream.Create(LogFileName, fmCreate);
try
MyFStream.CopyFrom(strm, strm.size);
finally
MYFStream.Free;
end;
MemoFile.Lines.LoadFromFile(LogFileName);
GroupBox2.Caption:=LogFileName+" "+DateTimeToStr(Now);
MemoEvents.Lines.Add("received file ""+LogFileName+""");
end;

end;


 
Digitman ©   (2002-08-06 10:18) [11]

Я что-то не вижу, где, в какой момент и как активизируется NMMSGServ1 и NMStrmServ1MSG, т.е. серверные стороны


 
Andrew2   (2002-08-06 10:34) [12]

Сами наверно :)
Я больше ничего с ними не делаю.


 
Digitman ©   (2002-08-06 10:54) [13]

Нет, ну а метод TPowersock.Listen() кто за тебя будет вызывать ? Каким образом серверная сторона может быть активизирована без вызова этого метода ?

Да еще и с Accept() - тот же вопрос : как ты акцептируешь и акцептируешь ли явно входящие кл.запросы на соединение ?


 
Andrew2   (2002-08-06 10:58) [14]

Пища для размышлений...
Поковыряюсь в этом направлении
Спасибо за помощь :)


 
Sterh-By   (2002-08-07 12:51) [15]

Вся суть в кривости компонент FastNet.
Выдержка из хелпа для TNMStrmServ:

property Port: Integer;
...
Accessibility: Runtime*, Designtime

Notes:
* In the case of the TNMGeneralServer, the Port property must be set during designtime.

Динамически создать об"єкт не удалось :(



 
Digitman ©   (2002-08-07 13:01) [16]

>Sterh-By

Почему сразу - "в кривости" ? Разработчик четко обозначил ограничения, с чем это связано - это уже иной вопрос.

А автор как раз, как я понял, и подразумевает смену порта именно в design-time. Нет ничего говорящего о смене порта в run-time и в приведенном им коде.


 
Sterh-By   (2002-08-07 13:35) [17]

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

Я, вот пытаюсь использовать Indy для этих целей, но не могу в"ехать, как задать таймауты для функций чтения/записи.
Имеются в виду компоненты IdTCPServer & IdTCPClient.
Использую ф-ии TIdTCPConnection.ReadBuffer & TIdTCPConnection.WriteBuffer

Может кто подскажет ?


 
Digitman ©   (2002-08-07 14:27) [18]

Та ведь - просто это, как "дважды два" !

Исходники-то есть перед глазами ? Думаю, что - должны быть, иначе - на кой черт такой Indy нужен.
Ну так глянь в них да посмотри, есть ли где-либо при инициализации гнезда строчка, вызывающаяя WinsockAPI-ф-цию SetSockOpt().

Если есть, смотри, откуда берутся параметры для установки опций
SO_RCVTIMEO int Receive time-out
SO_SNDTIMEO int Send time-out

Если - нет, можешь считать, что Indy не менее "кривой", чем FastNet.




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

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

Наверх




Память: 0.51 MB
Время: 0.014 c
3-20943
ivan73
2002-09-15 10:45
2002.10.07
как правильно прописать путь к БД IB по локальной сети.


1-21085
Sectey
2002-09-25 09:33
2002.10.07
Где найти dxDBGrid


14-21223
Карелин Артем
2002-09-10 13:49
2002.10.07
Вход автоматом в Win 2000 server.


1-21109
VID
2002-09-24 16:10
2002.10.07
Washington Post: Приложение тормозит при передачи большого текста


3-20895
скорпион
2002-09-14 16:50
2002.10.07
ошибка работы по сети