Java 为什么';我的插座没有收到响应吗?
我在android应用程序中打开了一个普通的java套接字,我必须使用它来发送请求和接收响应,我正常发送请求,但没有从服务器收到任何响应,我检查了服务器连接,一切正常,并且我尝试通过监听,请求正常发送,服务器正常发送响应,这是我使用的常规套接字编码:Java 为什么';我的插座没有收到响应吗?,java,android,sockets,Java,Android,Sockets,我在android应用程序中打开了一个普通的java套接字,我必须使用它来发送请求和接收响应,我正常发送请求,但没有从服务器收到任何响应,我检查了服务器连接,一切正常,并且我尝试通过监听,请求正常发送,服务器正常发送响应,这是我使用的常规套接字编码: public static void xbmc_connect(){ try { xbmc_socket = new Socket(xbmc_address, xbmc_port); } catch (Unknown
public static void xbmc_connect(){
try {
xbmc_socket = new Socket(xbmc_address, xbmc_port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void xbmc_sendingDataToSystem(String data) throws IOException{
xbmc_output = new DataOutputStream(xbmc_socket.getOutputStream());
xbmc_output.writeBytes(data);
}
public String xbmc_getServerResponse() throws JSONException{
String responseLine, server_response = null_string;
try {
xbmc_input = new BufferedReader(new InputStreamReader(
xbmc_socket.getInputStream()));
System.out.println(xbmc_input.toString());// doesn't print anything
} catch (IOException e) {
}
try {
while ((responseLine = xbmc_input.readLine()) != null) {
server_response = server_response + responseLine ;
}
return server_response;
}
简而言之:
xbmc\u输入
是一个缓冲读取器
要从BufferedReader读取,必须使用read()
或readLine()
使用toString()
获取BufferedReader的String
表示没有多大意义调用toString()
不会使BufferedReader
打印它可能收到的任何内容toString()
只需打印BufferedReader
对象-,即对象的引用
因此,要打印实际收到的内容(如果有),您可能需要尝试:
System.out.println(xbmc_input.readLine());
我只是把它放在测试中,我不想让它打印任何可读的东西,我只想让它给我任何结果,让我知道它收到了任何东西,顺便说一下,我用这样的读取行打印它,也不给任何东西用toString()打印BufferedReader不会告诉你它是否收到了任何东西。您必须调用
read()
或readLine()
。但是,我现在看到您至少在while循环中这样做了。在上面的catch语句中,执行e.printStackTrace()
以确保没有引发异常。