【发布时间】:2017-01-30 09:46:15
【问题描述】:
我有以下情况。 我有一个在 8090 端口上运行的本地托管 TCP/IP 服务器 我需要能够从我的 android 应用程序向它发送命令。服务器应该接受该命令并返回一组我需要的信息。 我无权访问服务器或服务器日志。
我一直在尝试什么
简单的 Socket 连接,似乎连接得很好。但是,在使用 printWriter 并向服务器发送我的命令之后。 BufferedReader 卡在 reader.readLine() 或 .read() 上。我假设服务器没有响应我的命令,作者没有正确写入(我怎么知道?)或者这种方法不适合手头的情况。
一直在尝试使用 URL 和 HTTPURLConnection 对象,但我不确定自己是否正确。
我确实有可以发布的代码,但我认为它不相关。
你有什么建议?
请求的代码
Socket socket = new Socket("10.0.0.16", 8090);
//Send message to server
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
String number = "message";
String sendMessage = number + "\n";
bw.write(sendMessage);
bw.flush();
System.out.println("Message sent to the server : "+sendMessage);
Thread.sleep(10000);
//Get the return message from the server
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String message = br.readLine();
System.out.println("Message received from the server : " +message);
【问题讨论】:
-
可以调试服务器吗?听起来解决方案可以通过查看服务器正在做什么/接收来找到。
-
如果接收者试图读取一行,你应该确保发送者发送了一行或者在发送后关闭了套接字。然后一切顺利。那你在做什么呢?
-
have code that I can post however I don't think its relevant yet。当然它是相关的,因为您的代码还没有确定。 -
好的,我会告诉你我得到了什么
-
to send it a command from my android application。您的 android 应用程序在哪里运行?
标签: java android sockets android-studio tcp-ip