等待服务器 70 秒
Wait server for 70 seconds
我是这个论坛的新人。我用一个线程在 Android 中创建了一个 TCP 客户端。此代码适用于我的应用程序:
class TCPClient extends Thread
{
String add;
public TCPClient(String IPa)
{
add=IPa;
}
public void run()
{
try
{
InetAddress serverAddr = InetAddress.getByName(add);
socket = new Socket(serverAddr, SERVERPORT);
//write part: i write to server
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.print("INIT");
out.flush();
//read part: I receive a message from server
byte[] bytes = new byte[1000];
StringBuilder x = new StringBuilder();
int numRead = 0;
if ((numRead = socket.getInputStream().read(bytes)) >= 0)
{
x.append(new String(bytes, 0, numRead));
}
if(x.toString().equals("INIT_ACK"))
//position_req();
getActivity().runOnUiThread(new Runnable() {
public void run()
{
Toast.makeText(getActivity().getApplicationContext(),"Connesso",Toast.LENGTH_LONG).show();
}
});
}
catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
但我有这个问题:服务器可能会在 70 秒后回复,所以我需要放置一个等待控件并监听服务器是否向我发送回复。
我该怎么做?
谢谢你的回答。
socket.setSoTimeout(70*1000);
所以,您的方法会很有效。我在 2009 年开发的第一个 Android 应用程序使用了这种方法。许多应用程序、架构师和团队都讨厌它并想要 AsyncTask,它在 WRT 上对它如何处理线程进行了各种失败,并快进到几个月前,当时我们签约的高价移动咨询公司放弃了 Async 任务并转而使用线程模型。哈哈。他们使用 Otto 而不是 runOnUIThread,但差异相同。
祝你好运!
我是这个论坛的新人。我用一个线程在 Android 中创建了一个 TCP 客户端。此代码适用于我的应用程序:
class TCPClient extends Thread
{
String add;
public TCPClient(String IPa)
{
add=IPa;
}
public void run()
{
try
{
InetAddress serverAddr = InetAddress.getByName(add);
socket = new Socket(serverAddr, SERVERPORT);
//write part: i write to server
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.print("INIT");
out.flush();
//read part: I receive a message from server
byte[] bytes = new byte[1000];
StringBuilder x = new StringBuilder();
int numRead = 0;
if ((numRead = socket.getInputStream().read(bytes)) >= 0)
{
x.append(new String(bytes, 0, numRead));
}
if(x.toString().equals("INIT_ACK"))
//position_req();
getActivity().runOnUiThread(new Runnable() {
public void run()
{
Toast.makeText(getActivity().getApplicationContext(),"Connesso",Toast.LENGTH_LONG).show();
}
});
}
catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
但我有这个问题:服务器可能会在 70 秒后回复,所以我需要放置一个等待控件并监听服务器是否向我发送回复。 我该怎么做? 谢谢你的回答。
socket.setSoTimeout(70*1000);
所以,您的方法会很有效。我在 2009 年开发的第一个 Android 应用程序使用了这种方法。许多应用程序、架构师和团队都讨厌它并想要 AsyncTask,它在 WRT 上对它如何处理线程进行了各种失败,并快进到几个月前,当时我们签约的高价移动咨询公司放弃了 Async 任务并转而使用线程模型。哈哈。他们使用 Otto 而不是 runOnUIThread,但差异相同。 祝你好运!