2011-03-11 85 views
1

我打開端口119(使用idHttpServer)上的套接字,它打開好(沒有錯誤報告,我可以看到通過查看netstat打開端口119)。但是,當我的套接字客戶端向服務器119端口發送請求時,服務器不會收到請求,客戶端也不工作。如果我將套接字端口更改爲另一個(如90,80,120),它可以正常工作。
我想套接字端口119是一個SO保留端口(但沒有任何運行在該端口上,我相信這一點)。我也知道119端口被新聞協議使用(但沒有新聞服務器)。
有誰知道爲什麼我不能連接到119端口? 110端口發生同樣的事情(彈出,但不彈出服務器)。這讓我瘋狂。德爾福2010年 - 套接字端口119不起作用

德爾福2010
最新版本的Indy
的Windows 2003 Server企業版。

+0

爲什麼不用120呢?真的有必要使用119? – RBA 2011-03-11 15:14:59

+0

端口119僅在啓動服務器時使用,或者在服務器停止時使用。無論如何,下面的評論之一,以確定哪個進程的端口打開 – 2011-03-11 21:35:23

回答

1

應當向什麼東西在你的開發機,因爲它是完全有效的使用119端口(或其他任何可用的端口)與INDY HTTP服務器。考慮到不建議在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防火牆的情況下):

Firewall warning

1

檢查端口119是否真的空閒。例如Sysinternals的TcpView。

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

+0

或通過使用telnet(遠程127.0.0.1 119)。 – RBA 2011-03-11 15:11:32

+0

@Radu:在TcpView上,你可以看到哪個進程持有端口 – Toto 2011-03-11 15:14:19

+0

的確,我只是建議他一個快速的解決方案,看看應用程序是否在使用端口。 – RBA 2011-03-11 15:18:16

0

看來,端口119被多家mallwares(Happy99等)。您的防病毒軟件可能會阻止該端口。另外,你有沒有從Windows的防火牆打開端口?只是我5分錢......

最好的問候,
拉杜

1

由於您在打開/綁定端口時沒有收到錯誤,這聽起來像您的服務器端很好,它是客戶端ide可能會被阻止。 看客戶端上防火牆的時間...