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