2012-09-13 80 views
0

hello guyz我在C#中做了一個簡單的骨程序,它簡單地從服務器發送消息到客戶端。無法連接到C#中的另一臺計算機#

現在我已經成功地測試了兩個在同一臺機器上運行的程序。但是,當我嘗試在不同的網絡上連接2臺不同的計算機時,它會向我發送無法連接的消息。

這裏的服務器代碼。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.IO; 
using System.Net.Sockets; 

namespace chat_client_console 
{ 
    class Program 
    { 
     static TcpListener listener; 
     static void Main(string[] args) 
     { 
      /* 
      string name = Dns.GetHostName(); 
      IPAddress[] address = Dns.GetHostAddresses(name); 


      foreach(IPAddress addr in address) 
      { 
       Console.WriteLine(addr); 
      } 

      Console.WriteLine(address[2].ToString());*/ 
      Console.WriteLine("server"); 
      listener = new TcpListener(IPAddress.Any, 2055); 

      listener.Start(); 

      Socket soc = listener.AcceptSocket(); 
      Console.WriteLine("Connection successful"); 
      Stream s = new NetworkStream(soc); 

      StreamReader sr = new StreamReader(s); 
      StreamWriter sw = new StreamWriter(s); 

      sw.AutoFlush = true; 
      sw.WriteLine("A test message"); 
      sw.WriteLine("\n"); 
      Console.WriteLine("Test message delivered. Now ending the program"); 

      /* 
      string name = Dns.GetHostName(); 
      Console.WriteLine(name); 
      //IPHostEntry ip = Dns.GetHostEntry(name); 
      //Console.WriteLine(ip.AddressList[0].ToString()); 
      IPAddress[] adr=Dns.GetHostAddresses(name); 
      foreach (IPAddress adress in adr) 
      { 
       Console.WriteLine(adress); 
      } 
      */ 
      Console.ReadLine(); 
     } 
    } 
} 

這裏是客戶端代碼。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Net.Sockets; 

namespace chat_client_console_client 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string host_ip_address; 
      Console.WriteLine("Enter server ip address"); 
      host_ip_address=Console.ReadLine(); 
      string display; 
      TcpClient client = new TcpClient(host_ip_address, 2055); 
      Stream s = client.GetStream(); 
      Console.WriteLine("Connection successfully received"); 

      StreamWriter sw = new StreamWriter(s); 
      StreamReader sr = new StreamReader(s); 
      sw.AutoFlush = true; 
      /*while (true) 
      { 

       display = sr.ReadLine(); 

       if (display == "") 
       { 
        Console.WriteLine("breaking stream"); 
        break; 
       } 

      }*/ 

      display = sr.ReadLine(); 

      Console.WriteLine(display); 
      Console.ReadLine(); 
     } 
    } 
} 

現在,當我在客戶端程序中輸入127.0.0.1時,它成功連接到服務器並收到消息。

但是,當我在另一臺計算機上運行的客戶端程序中輸入我的外部IP地址時,我無法連接。

在這個問題上需要建議。

謝謝。

+1

是在防火牆中打開的端口? –

+0

我認爲這樣兩臺計算機都可以互相ping通...... –

+1

確保您禁用防火牆和virusscanners進行測試。以確保它是在你自己的代碼中,而不是外部的玩你:) –

回答

0

您可以在客戶端計算機上使用Wireshark並查找任何tcp數據包以確保將消息發送到服務器。

相關問題