2012-03-28 135 views
2

是否可以通過indy客戶端連接到遠程主機並將數據發送到本地服務器。
我嘗試這樣的事情,我不接受任何東西:Delphi indy遠程主機UDP客戶端/服務器

Server:=TIdUDPServer.Create; 
    Server.OnUDPException:=UDPException; 
    Server.OnUDPRead:=UDPRead; 
    Server.Bindings.Add.Port:=10; 
    Server.Active:=true; 
    //Server is listening to local IP 

    Client:=TIdUDPClient.Create; 
    with Client do begin 
    Host:= '130.204.159.205'; //My IP 
    Port:=10; 
    Send('Hello'); 
    end; 

我的目標是創建一個將與UDP通過互聯網溝通

+1

它是控制檯還是VCL應用程序?有關控制檯應用程序,請參閱http://stackoverflow.com/questions/7647112/how-can-i-use-tidudpserver-in-a-console-application – mjn 2012-03-28 11:20:57

+2

不要忘記防火牆和/或反**病毒** – ComputerSaysNo 2012-03-28 11:27:55

+0

它不是控制檯應用程序。 – TreantBG 2012-03-28 15:12:41

回答

2

UDP是無連接傳輸。它不保證像TCP一樣傳輸數據,特別是在像互聯網這樣的大型網絡上。如果TIdUDPServer未接收到數據,則數據包不會到達機器開始處,或者在TIdDUPServer可以看到它們之前被阻止。使用數據包嗅探器(如Wireshark)來驗證數據包是否到達TIdUDPServer正在偵聽的NIC。如果他們不是,那麼你有一個網絡問題。如果他們是,那麼你有一個操作系統的問題。

0

是的,它是可能的客戶端/服務器應用程序。讓我們繞過了一些問題,並嘗試這個:

Host := '127.0.0.1' 

如果還是不行,請檢查您的Windows防火牆允許您的測試應用程序連接到自身。 (關閉本地基於軟件的防火牆並再次嘗試。)

+0

老兄,UDPServer沒有這樣的變量主機。有IP:='127.0.0.1' 但它同樣我沒有收到文字 – TreantBG 2012-03-28 19:00:19

+0

老兄,我不是在說主機,我在說客戶。我建議驗證你的IP地址。而不是使用您的公共地址,而是嘗試使用您的本地主機地址,而不是(127.0.0.1) – 2012-03-28 19:23:19

+0

我不想運行此程序只爲我的本地網絡 我希望我的客戶端/服務器應用程序通過互聯網連接遠程主機 – TreantBG 2012-03-28 19:29:08