2013-04-05 49 views
0

我正在使用简单的客户端服务器应用程序,它就像聊天信使。 我正在使用客户端服务器方法。我的应用程序在LAN局域网上工作正常,但是当它尝试通信以切断局域网时。然后对客户没有回应。而我知道服务器IP地址(通过外部方式),它使用宽带连接并驻留在WAN上。 我想我无法解析IP地址,或发生代理问题。 任何人都可以帮我吗? 关心! Sm.Abdullah无法使用客户端服务器方法通过广域网与服务器连接?

// 
/* Server Program */ 

using System; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 

public class serv { 
    public static void Main() { 
    try { 
     IPAddress ipAd = IPAddress.Parse("172.21.5.99"); 
     // use local m/c IP address, and 
     // use the same in the client 

/* Initializes the Listener */ 
     TcpListener myList=new TcpListener(ipAd,8001); 

/* Start Listeneting at the specified port */   
     myList.Start(); 

     Console.WriteLine("The server is running at port 8001...");  
     Console.WriteLine("The local End point is :" + 
          myList.LocalEndpoint); 
     Console.WriteLine("Waiting for a connection....."); 

     Socket s=myList.AcceptSocket(); 
     Console.WriteLine("Connection accepted from " + s.RemoteEndPoint); 

     byte[] b=new byte[100]; 
     int k=s.Receive(b); 
     Console.WriteLine("Recieved..."); 
     for (int i=0;i<k;i++) 
      Console.Write(Convert.ToChar(b[i])); 

     ASCIIEncoding asen=new ASCIIEncoding(); 
     s.Send(asen.GetBytes("The string was recieved by the server.")); 
     Console.WriteLine("\nSent Acknowledgement"); 
/* clean up */    
     s.Close(); 
     myList.Stop(); 

    } 
    catch (Exception e) { 
     Console.WriteLine("Error..... " + e.StackTrace); 
    }  
    } 

} 

--------------------------------------------------------------------------- 

/*  Client Program  */ 

using System; 
using System.IO; 
using System.Net; 
using System.Text; 
using System.Net.Sockets; 


public class clnt { 

    public static void Main() { 

     try { 
      TcpClient tcpclnt = new TcpClient(); 
      Console.WriteLine("Connecting....."); 
      // here is local ip.. 
      // if i replace it with WAN IP it does not communicate. 
      tcpclnt.Connect("172.21.5.99",8001); 
      // use the ipaddress as in the server program 

      Console.WriteLine("Connected"); 
      Console.Write("Enter the string to be transmitted : "); 

      String str=Console.ReadLine(); 
      Stream stm = tcpclnt.GetStream(); 

      ASCIIEncoding asen= new ASCIIEncoding(); 
      byte[] ba=asen.GetBytes(str); 
      Console.WriteLine("Transmitting....."); 

      stm.Write(ba,0,ba.Length); 

      byte[] bb=new byte[100]; 
      int k=stm.Read(bb,0,100); 

      for (int i=0;i<k;i++) 
       Console.Write(Convert.ToChar(bb[i])); 

      tcpclnt.Close(); 
     } 

     catch (Exception e) { 
      Console.WriteLine("Error..... " + e.StackTrace); 
     } 
    } 

} 
+0

也许您的服务器端口被防火墙阻止。 – alex 2013-04-05 13:26:17

+0

不是。让我更具体。 服务器驻留在具有相同公用IP或WAN IP的所有计算机的LAN上,因为它们与同一调制解调器连接。在这种情况下,客户端将如何与服务器进行通信? – 2013-04-05 13:32:58

回答

相关问题