从PC到Android设备的网络连接

时间:2012-04-02 12:05:38

标签: java android sockets

我现在用了几个小时的搜索,但找不到符合我问题的答案。我只想在PC和Android设备之间创建TCP网络连接。从Android到PC发送数据(比方说一个简单的字符串)实际上可以毫无问题地使用Socket和ServerSocket。 但是,从PC向Android发送数据不起作用。没有收到任何东西。这是代码:

Android设备上的服务器:

    try {
        ServerSocket serverSocket = new ServerSocket( 1234 );

        //tell logcat the server is online
        Log.d("TCP", "C: Server Online...");

        while ( true ) {

            Socket client = serverSocket.accept();

            BufferedReader in = new BufferedReader( new InputStreamReader(    client.getInputStream() ) );
            String input = in.readLine();
            // Do what ever you want with input String

            client.close();
        }
    } catch ( Exception e ) {
        Log.d( "TCP", "C: " + e );
    }

PC上的客户:

    try {

        InetAddress serverAddr;

        try {
            serverAddr = InetAddress.getByName(IPAdresse);

            socket = new java.net.Socket(serverAddr,portAdresse);
            socket.setSoTimeout(1000);
        }catch (ConnectException e) { /*e.printStackTrace();*/ }

        PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
        out.println(nachricht);

        socket.close();

    }catch (SocketException e) { 

// e.printStackTrace();             试试{socket.close(); } catch(例外e1){}

    }catch (IOException e) {

// e.printStackTrace(); 尝试{socket.close(); } catch(例外e1){}

    }catch (NullPointerException e) {

// e.printStackTrace();             试试{socket.close(); } catch(例外e1){/ > 1.printStackTrace(); /}

    }

我完全不知道为什么它不起作用。我想我的Android代码或Android设备中的某些设置存在问题。也许有人已经遇到了同样的麻烦和适合我的灵魂。会帮助很多。 感谢

2 个答案:

答案 0 :(得分:0)

更改此行:

PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);

到此:

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

在您的PC客户端上查看它是否有效。

答案 1 :(得分:0)

我可以想到这里可能发生的一些事情:

  1. Android仅将套接字绑定到127.0.0.1
  2. 手机上缺少权限
  3. 防火墙某处阻止通信
  4. 您没有连接到正确的IP地址
  5. 对于这样的问题,我在使用Wireshark嗅探数据时输入了大量的打印语句或单步执行代码。