Java android中的异步任务
我想对该任务的多个调用使用相同的套接字地址 我试图从不同的班级获得地址,但没有成功 请帮忙 我从不同班级打来的电话是:Java android中的异步任务,java,android,android-asynctask,asyncsocket,Java,Android,Android Asynctask,Asyncsocket,我想对该任务的多个调用使用相同的套接字地址 我试图从不同的班级获得地址,但没有成功 请帮忙 我从不同班级打来的电话是: new ConnectToServer().execute(ip, "2000", "br1"); 我的任务代码是: public class ConnectToServer extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String
new ConnectToServer().execute(ip, "2000", "br1");
我的任务代码是:
public class ConnectToServer extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... parms) {
// TODO Auto-generated method stub
try {
Socket s = new Socket(parms[0], Integer.parseInt(parms[1]));
// ******
OutputStream os = s.getOutputStream();
BufferedOutputStream out = new BufferedOutputStream(os);
if (parms[2] == "br1") {
out.write("rr1".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "br2") {
out.write("rr2".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "br3") {
out.write("rr3".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "br4") {
out.write("rr4".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "bb1") {
out.write("bb1".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "bb2") {
out.write("bb2".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "bb3") {
out.write("bb3".getBytes());
out.write('\n');
out.flush();
} else if (parms[2] == "bb4") {
out.write("bb4".getBytes());
out.write('\n');
out.flush();
}
// s.shutdownOutput();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
公共类ConnectToServer扩展异步任务{
@凌驾
受保护的空doInBackground(字符串…参数){
//TODO自动生成的方法存根
试一试{
sockets=newsocket(parms[0],Integer.parseInt(parms[1]);
// ******
OutputStream os=s.getOutputStream();
BufferedOutputStream out=新的BufferedOutputStream(os);
如果(参数[2]=“br1”){
out.write(“rr1.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“br2”){
out.write(“rr2.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“br3”){
out.write(“rr3.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“br4”){
out.write(“rr4.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“bb1”){
out.write(“bb1.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“bb2”){
out.write(“bb2.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“bb3”){
out.write(“bb3.getBytes());
out.write('\n');
out.flush();
}否则如果(参数[2]=“bb4”){
out.write(“bb4.getBytes());
out.write('\n');
out.flush();
}
//s.关闭输出();
}捕获(数字格式){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(未知后异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
}
您无法将javaString
s与String==String
进行比较。您需要使用String.equals(String)
请尝试以下代码:
if (parms[2].equals("br1")) {
out.write("rr1".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("br2")) {
out.write("rr2".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("br3")) {
out.write("rr3".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("br4")) {
out.write("rr4".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("bb1")) {
out.write("bb1".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("bb2")) {
out.write("bb2".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("bb3")) {
out.write("bb3".getBytes());
out.write('\n');
out.flush();
} else if (parms[2].equals("bb4")) {
out.write("bb4".getBytes());
out.write('\n');
out.flush();
}
parms[2]=“br1”
。不好的。搜索如何在Java中比较字符串。我谈论的是套接字而不是字符串。请给出堆栈跟踪或更深入的解释,说明问题所在。对不起,我是初学者,,,当我调用这个类时(new ConnectToServer().execute(ip,“2000”,“br1”);)…它是create new socket,当我回忆起它的create new socket等等,我想在所有电话中使用相同的地址??正确的代码应该解决套接字s=***正确的***新套接字(ip,端口);