1

(idHttpServerを使用して)ポート119でソケットを開いていますが、正常に開きます(エラーは報告されておらず、netstatを見るとポート119が開いていることがわかります)。しかし、ソケットクライアントがサーバー119ポートに要求を送信すると、サーバーは要求を取得せず、クライアントも機能しません。ソケットポートを別のポート(90、80、120など)に変更すると、正常に機能します。
ソケットポート119はSO予約ポートだと思います(ただし、そのポートでは何も実行されていません。確かにそうです)。また、ポート119がニュースプロトコルで使用されていることも知っています(ただし、ニュースサーバーはありません)。
119ポートに接続できない理由を誰かが知っていますか?110ポートでも同じことが起こります(ポップですが、ポップサーバーはオンではありません)。それは私を夢中にさせています。

Delphi2010
最新のインディバージョン
Windows2003サーバーエンタープライズエディション。

4

5 に答える 5

1

ポートのオープン/バインドでエラーが発生しなかったため、サーバー側は問題ないようです。ブロックされている可能性があるのはクライアント側です。クライアントのファイアウォールを見てみましょう...

于 2011-03-12T04:11:13.170 に答える
1

INDY HTTP サーバーで 119 ポート (またはその他の使用可能なポート) を使用することは完全に有効であるため、開発マシン内の何かにする必要があります。1024 の予約済みポートより下の 80 以外のポートを使用することはお勧めできませんが、それは別のことです。

簡単なテスト、2 つのアプリケーションを作成しました。関連する部分は次のとおりです。

サーバ

dfm

object Form2: TForm2
  Caption = 'Server'
  object IdHTTPServer1: TIdHTTPServer
    Active = True
    Bindings = <>
    DefaultPort = 119
    Left = 56
    Top = 40
  end
end

クライアント

dfm

object Form3: TForm3
  Caption = 'Form3'
  object Memo1: TMemo
    Left = 16
    Top = 8
    Width = 185
    Height = 89
    Lines.Strings = (
      'Memo1')
    TabOrder = 0
  end
  object Button1: TButton
    Left = 207
    Top = 8
    Width = 75
    Height = 25
    Caption = 'Connect'
    TabOrder = 1
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 207
    Top = 39
    Width = 75
    Height = 25
    Caption = 'Disconnect'
    TabOrder = 2
    OnClick = Button2Click
  end
  object IdTCPClient1: TIdTCPClient
    OnStatus = IdTCPClient1Status
    ConnectTimeout = 0
    Host = 'localhost'
    IPVersion = Id_IPv4
    Port = 119
    ReadTimeout = -1
    Left = 32
    Top = 40
  end
end

パス

procedure TForm3.Button1Click(Sender: TObject);
begin
  IdTCPClient1.Connect;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  IdTCPClient1.Disconnect;
end;

procedure TForm3.IdTCPClient1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: string);
begin
  Memo1.Lines.Add(AStatusText);
end;

結果:

正常に接続されました

たとえば、既定の Windows ダイアログを受け入れることによって、ファイアウォール上のトラフィックを許可することを忘れないでください (Windows ファイアウォールを使用している場合)。

ファイアウォールの警告

于 2011-03-11T16:53:51.207 に答える
1

ポート 119 が本当に空いているかどうかを確認します。たとえば、Sysinternals の TcpView を使用します。

http://technet.microsoft.com/en-us/sysinternals/bb842062

于 2011-03-11T15:10:41.163 に答える
0

ポート 119 は複数のマルウェア (Happy99 など) で使用されているようです。ウイルス対策がポートをブロックしている可能性があります。また、Windows のファイアウォールからポートを開放しましたか? ちょうど私の5セント...

よろしく、
ラドゥ

于 2011-03-11T15:23:04.123 に答える
0

NNTPSVC サービスが実行されていませんか? http://support.microsoft.com/kb/832017

Portqry.exe を使用して、ポートが機能しているかどうかを確認することもできます http://support.microsoft.com/default.aspx?scid=kb;en-us;310099

このトピックについて最後に覚えていることは、ISA がこのポートをブロックすることがあるということです。したがって、これが発生していないことを確認する必要があります。

HTH、

于 2011-03-11T15:29:08.627 に答える