套接字不会收到任何数据

时间:2016-03-24 15:58:55

标签: java android android-studio network-programming

我在Android Studio中有一个C#服务器和这个Java客户端:

@Override
    public void run() {

        try {
            Socket socket = new Socket("192.168.0.107", 7778);
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            while (true) {
                currentMessage = inFromServer.readLine();
                System.out.println(currentMessage);

                Thread.sleep(200);
            }
        }
        catch(Exception e) {
            System.out.print("Error: " + e.toString() + "\n");
        }
    }

我已经使用Telnet对服务器进行了测试,并且他们应该发出消息,因此我几乎可以肯定,客户端代码中存在问题。 我也尝试过使用DataInputStream而不是BufferedReader,但它给了我相同的结果。我也没有任何Exeptions。

我的AndroidManifest.xml中有这些权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

1 个答案:

答案 0 :(得分:3)

readLine()阻塞,直到在底层缓冲区中收到一个完整的行(由\r\n\n终止)(或者已到达蒸汽的末尾)。因此,除非您的服务器使用换行符终止数据,否则您的程序将不会打印任何内容。除了套接字超时之外的异常。