【发布时间】:2018-05-28 16:30:08
【问题描述】:
您好,我有一个使用套接字连接到远程服务器的应用程序
socket = new Socket();
socket.connect(new InetSocketAddress(Ip, portNum), 7000);
我有两种发送和接收方法
发送中的场景是
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
在接收方法中
String msg = "";
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (in.ready()) {
msg = msg + (char) in.read();
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
在我调用的另一个类的 AsyncTask 中
send();
String response=receive();
上面的代码在没有等待期的情况下是不发送或接收的
即
Thread.sleep(2000);
我知道睡眠是一种不好的方法 我应该使用什么最佳方案?
在发送方法中创建一个 AsyncTask 并在接收方法中创建另一个更好。
这是我使用睡眠的地方以及发送和接收的数据
client.send(some sql statement representED as json format);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// sql select result represented as json
String RESULT = client.recive();
【问题讨论】:
-
我们看不到你在哪里有睡眠声明。或者如果你有两个。
-
您还应该告诉我们您发送的内容。以及您期望的响应。
-
我编辑了问题以显示何时调用 sleep 以及发送和接收的数据。
-
我们看不到您发送的内容,并且您没有说明您希望收到的内容,尽管我要求了。此外,您没有告诉服务器期望接收什么以及它将作为响应发送什么。
-
发送的是 Json 格式,我期望接收的也是 json 格式,例如发送的数据 { "date":"15/12/2017", "sqlStment": "select name ,id from users" } 服务器响应 { "isSuccessful":"true" , "data":[{"name":"Ali"}, {"id":"1"}] }
标签: java android sockets android-asynctask