Android套接字仅适用于本地网络

时间:2013-03-25 14:16:58

标签: c# java android sockets client-server

我最近遇到了一个非常荒谬的问题...... 我正在创建一个应该从Android(当然是Java)

连接到服务器(用C#编写)的应用程序

客户端(Java)的代码如下:

InetAddress serverAddr = InetAddress.getByName(SERVERIP); //My IP in a constant, it works with a local one...
Log.e("TCP Client", serverAddr.getHostAddress()); //Just to debug
Socket socket = new Socket(serverAddr, SERVERPORT); //Here I get an exception for the global IP

奇怪的是昨天一切仍然有效......我没有改变任何有关端口转发的信息,端口仍然转发到我的电脑。我还在Android Manifest中设置了“INTERNET”权限。

服务器代码是用C#编写的,并且编写起来非常简单:

Console.WriteLine("Waitng for connection");
TcpClient client = Server.AcceptTcpClient();
NetworkStream ns = client.GetStream();

这里我永远不会得到TCPClient对象,因为之前连接在客户端上超时。没有任何东西进入服务器。

如上所述,这很奇怪,因为昨天一切似乎都有效。

1 个答案:

答案 0 :(得分:0)

可能是您昨天通过Wifi连接,现在您正尝试通过3G / GPRS连接进行连接。因为如果您使用的是Wifi连接,那么可能是您的服务器和Android在同一网络上导致连接成功的情况。

您是否确保可以在公共网络外部访问服务器?