在Android设备和PC之间使用套接字(同一网络)

时间:2014-02-07 12:44:59

标签: java android sockets networking tcp

我一直在努力解决这个问题。我只是想做的,就是在我的Android应用程序和我在PC上的java程序之间创建套接字连接。

我已经尝试了UDP和TCP套接字以及不同类型的IP和端口号。

那么,我怎样才能做到这一点?

这是我的(当前代码)与(尝试)TCP连接:

来自服务器端的代码片段(PC java程序):

try {

    DatagramSocket socket = new DatagramSocket(4466);
    byte[] buffer = new byte[2048];

    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
    socket.receive(packet);

} catch (SocketException e) {
  e.printStackTrace();
} catch (IOException e) {
  e.printStackTrace();
}

来自我的Android应用程序(客户端)的相关剪辑:

try {

    InetAddress host = InetAddress.getByName("192.168.1.255");
    DatagramSocket socket = new DatagramSocket (null);
    byte[] buffer = new byte[2048];
    buffer = "hej hej".getBytes();

    DatagramPacket packet=new DatagramPacket (buffer, buffer.length, host, 4466);
    socket.send(packet);
    socket.close();

} catch(Exception e) {
    e.printStackTrace();
}

IP地址:192.168.1.255应该是某种广播IP。但我也尝试过不同的IP,例如我的PC的IP(在Android应用程序中硬编码),255.255.255.0,localhost等等。

如果有人能帮帮我,我真的很感激!

2 个答案:

答案 0 :(得分:4)

我刚刚在Android和桌面应用程序中创建了简单的演示,它通过Socket Connection连接,就像聊天应用程序一样。可能会对你有很大的帮助。 请查看以下链接以获得更多说明。

Android Client Connected with Socket

答案 1 :(得分:1)

您需要计算机的公共地址(搜索类似我的IP的内容),并确保没有防火墙阻止该端口。 192.168。***。*地址不公开(它是一个LAN地址),模拟器(或实际的手机)将无法看到它。