2016-08-17 48 views
1

将数据发送到Android的PC我想从我的Android app超过TCP将数据发送到我的PC。我用PC到PC进行了测试,工作正常。但是当我尝试从Android发送到PC时,Android正在卡住。 PC套接字和android套接字有什么区别,我该如何解决这个问题?无法通过TCP

服务器

byte[] buffer = new byte[1000]; 

IPAddress ipAddress = IPAddress.Parse("XXX.XXX.XXX.XXX"); 
IPEndPoint localEndpoint = new IPEndPoint(ipAddress, 8080); 

Socket sock = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 


sock.Bind(localEndpoint); 
sock.Listen(5); 

Socket confd = sock.Accept(); 

while (true) { 
    string data = null; 
    int b = confd.Receive(buffer); 
    data += Encoding.ASCII.GetString(buffer, 0, b); 
    Console.WriteLine("" + data); 
} 

客户端的Android

IPAddress ipAddress = IPAddress.Parse("XXX.XXX.XXX.XXX"); 
IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, 8080); 

Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 


try { 

    client.Connect(ipEndpoint); 
    string message = "What can i send for you?"; 
    byte[] sendmsg = Encoding.ASCII.GetBytes(message); 
    int n = client.Send(sendmsg); 
} 
catch (Exception e) { 
    Toast.MakeText(Application.Context, e.ToString(), ToastLength.Short).Show(); 
} 
+0

当处理网络通信时,它总是有助于首先检查基本知识。确保没有防火墙或网络路由器被阻止。试试不同的端口(8080很常见)。尝试一个不同的IP地址。确保你的IP地址在客户端和服务器上是正确的。你说过你尝试过PC - > PC,但它是在同一台PC还是不同的?如果相同然后尝试不同。等 –

+0

我检查了所有,仍在工作的PC - > PC,但不是Android - > PC。 – Pareidolia

+0

大多数路由器不允许来自Wifi的流量到有线(pc?)网络。确保工作。顺便说一句:IP地址应该是本地地址(192.168.x.x/10.x.x.x) - 您不必屏蔽它们。 – Robert

回答

0

答案真的很概括了在评论说。

这个问题似乎不是一个编程问题,而是一个网络配置问题。

在进行任何形式的网络通信时,始终有助于从基础开始尝试并追踪任何问题。

  1. 检查你的防火墙没有阻止任何流量。
  2. 检查您的路由器是否阻止任何流量。
  3. 更改您使用的端口,特别是如果它是一个常见的端口,如 8080,因为它可能正在被其他应用程序使用。
  4. 如果使用主机名尝试使用IP地址直接
  5. 试着改变你的IP地址(如果使用动态地址)

由于这个工作做PC的时候 - > PC测试在同一台主机上,然后在同一网络上的两台不同PC之间进行相同的测试。这将帮助您追踪是否出现网络问题。

在这种情况下,看来你是通过移动网络访问,那么你必须使用你的公共IP地址,不是你的私人地方之一。要找到这个有很多服务,如https://www.whatismyip.com 然后还要确保您的路由器&防火墙让流量通过您的本地PC并根据需要进行端口转发。

为了避免通过移动网络会那么你也可以尝试通过USB将手机连接到PC和网络的方式。
本网站将帮助您配置您的PC和您的手机以允许:https://android.stackexchange.com/questions/73168/how-to-use-pcs-internet-on-android-phone-through-usb-cable

+0

只是一个说明:USB连接不是必需的。只需从您的电脑主机网络[这里](http://stackoverflow.com/questions/23168152/use-netsh-wlan-set-hostednetwork-to-create-a-wifi-hotspot-and-the-authenti) – Pareidolia