2016-12-29 49 views
2

我有一個遠程桌面的項目,需要使用DNS服務器使用DNS服務器錯誤

連接我有一個錯誤,指出知識產權的格式和無效

private static void ConnectToServer() 
     { 
      int attempts = 0; 

      while (!clientSocket.Connected) 
      { 
       try 
       { 
        attempts++; 
        Console.WriteLine("Connection attempt " + attempts); 

        // clientSocket.Connect(IPAddress.Parse(Dns.GetHostAddresses("kamikazehc.ddns.net")), port); 
        clientSocket.Connect(IPAddress.Parse("kamikazehc.ddns.net"), port); 
        Thread.Sleep(100); 
       } 
       catch (SocketException) 
       { 
        Console.Clear(); 
       } 
      } 

      Console.Clear(); 
      Console.WriteLine("Connected"); 
     } 

編輯:

這代碼留在外部用戶,我的電腦作爲管理員。

當用戶運行他們應該kamikazehc.ddns.net連接控制檯,(我的電腦)

Kamikazehc.ddns.net解決上189.6.26.203。

我只能連接本地 使用:

clientSocket.Connect(IPAddress.Parse("192.168.1.102"), port); 

當用戶連接到我的電腦應該出現在這個名單:

http://prntscr.com/dpelr6

private static Socket clientSocket = new Socket 
     (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 

    private const int port = 100; // same as server port 
+0

您應該使用[Dns.GetHostEntry](https://msdn.microsoft.com/en-us/library/ms143998(v = vs.110).aspx)而不是'IPAddress.Parse' – bansi

+0

從cmd.exe> IPConfig/All運行。檢查DNS服務器的名稱。然後從cmd.exe嘗試ping服務器以獲取IP地址。 IPAddress.Parse()方法需要IP地址。使用以下內容:LocalHostIPEntry = Dns.GetHostEntry(LocalHostName); LocalHostIP = LocalHostIPEntry.AddressList [0]; – jdweng

+0

http://prntscr.com/dpepy5 DNs服務器 –

回答

0

您應該使用Dns.GetHostEntry將域名解析爲IP地址。

IPAddress.Parse只將IP地址字符串轉換爲IPAddress實例。

嘗試

clientSocket.Connect(Dns.GetHostEntry("kamikazehc.ddns.net").AddressList[0], port); 

注:這裏的第一個IP地址的主機條目返回用於連接。

編輯:
從評論:你的問題是因爲你沒有清楚地瞭解TCP IP網絡的工作方式。您需要將名稱解析爲本地IP。通常,公共IP在本地網絡內不起作用。您可以執行以下操作。

添加在SYSTEM32主機條目的/ etc /司機/ hosts文件

192.168.1.102 kamikazehc.ddns.net 

更好的是,如果你可以修改你的DNS服務器主機條目爲內部網絡做了不同的解決。但我現在不推薦給你。如果你有網絡管理員,你可以要求他/她爲你做。那麼你不需要主機條目。

如果您無法從外部網絡連接上述代碼,則需要檢查防火牆設置。

+0

'192.168.1.102'是一個可解析爲IP地址的字符串。所以它是正確的。其中'kamikazehc.ddns.net'是一個域名,DNS需要將其解析爲相應的IP地址。所以你需要Dns。GetHostEntry'爲 – bansi

+0

只適用於使用本地IP:'clientSocket.Connect(IPAddress.Parse(「192.168.1.102」),port);' –

+0

是'192.168.x.x'範圍是本地IP。對我'kamikazehc.ddns.net'解析爲'189.6.26.127' – bansi