1

我正在端口 119 上打开一个套接字(使用 idHttpServer),它打开正常(没有报告错误,我可以通过查看 netstat 看到端口 119 已打开)。但是当我的套接字客户端向服务器 119 端口发送请求时,服务器没有收到请求,客户端也不工作。如果我将套接字端口更改为另一个(例如 90、80、120)它工作正常。
我猜套接字端口 119 是一个 SO 保留端口(但该端口上没有运行任何东西,我确信这一点)。我也知道新闻协议使用了 119 端口(但没有新闻服务器)。
有谁知道为什么我无法连接到 119 端口?同样的事情发生在 110 端口(pop,但不是 pop server on)。这让我快疯了。

Delphi 2010
最新 indy 版本
Windows 2003 server 企业版。

4

5 回答 5

1

检查端口 119 是否真的空闲。例如来自 Sysinternals 的 TcpView。

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

于 2011-03-11T15:10:41.163 回答
1

它应该是您的开发机器中的东西,因为将 119 端口(或任何其他可用端口)与 INDY HTTP Server 一起使用是完全有效的。考虑到不建议在 1024 保留端口之下使用不同于 80 的端口,但这是另一回事。

我做了一个简单的测试,两个应用程序。以下是相关部分:

服务器

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

由于您在打开/绑定端口时没有收到错误,因此听起来您的服务器端很好,客户端可能会被阻止。是时候看看客户端上的防火墙了...

于 2011-03-12T04:11:13.170 回答
0

似乎有几个 mallwares(Happy99 和其他)使用了端口 119。您的防病毒软件可能会阻止该端口。另外,您是否从 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 有时会阻止这个端口。所以你需要确保这不会发生。

高温下,

于 2011-03-11T15:29:08.627 回答