Delphi 2010 - 套接字端口119不起作用

时间:2011-03-11 15:05:34

标签: delphi sockets windows-server-2003 indy10

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

Delphi 2010
最新的indy版本
Windows 2003服务器企业版。

5 个答案:

答案 0 :(得分:1)

检查端口119是否真的空闲。例如,使用Sysinternals的TcpView。

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

答案 1 :(得分:1)

它应该是您的开发机器中的东西,因为使用INDY HTTP Server的119端口(或任何其他可用端口)是完全有效的。考虑到不建议在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

PAS

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;

结果:

Successfully connected

不要忘记允许防火墙上的流量,例如接受默认的Windows对话框(如果使用Windows防火墙):

Firewall warning

答案 2 :(得分:1)

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

答案 3 :(得分:0)

似乎端口119被几个商城(Happy99和其他)使用。您的防病毒软件可能正在阻止该端口。还有,你从Windows的防火墙打开了端口吗?只是我5美分......

最好的问候,
拉杜

答案 4 :(得分:0)

您确定NNTPSVC服务未运行吗? http://support.microsoft.com/kb/832017

您还可以使用Portqry.exe查看端口是否正常工作 http://support.microsoft.com/default.aspx?scid=kb;en-us;310099

我记得关于这个话题的最后一件事是ISA有时会阻止这个端口。所以你需要确保没有发生这种情况。

HTH,