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

Вниз

Смена портов 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.01 c
6-21184
Сергей Нечепуренко
2002-08-05 16:02
2002.10.07
Как отослать сообщение всем компьютерам в локальной сети?


1-20981
Tadeush
2002-09-26 12:22
2002.10.07
А лгоритм поиска и замены.


1-21081
Semion
2002-09-25 07:18
2002.10.07
Поможите


3-20912
Диана
2002-09-16 11:56
2002.10.07
Запросы


14-21278
Бармен
2002-09-10 20:43
2002.10.07
А я тут в Ялте оттягиваюсь!!!!





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