有人可以帮我发送2个不同的数据类型超过1个套接字只能从android到java服务器...我必须一起发送一个数组和一个字符串。它崩溃了应用程序
private void Send()
{
Thread t = new Thread() {
public void run() {
try {
Socket s = new Socket("192.168.0.3", 7000);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(array);
out.flush();
out.close();
DataOutput out1 =new DataOutput(s.getOutputStream());
out1.writeUTF(id);
out1.flush();
out1.close;
s.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
};
t.start();
Toast.makeText(MainActivity.this, "Message Sent !", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
我假设你的代码中的错误是,你的Socket的Outputstream已经关闭了。问题是,如果关闭任何流,则所有基础流也将关闭。因此,如果关闭ObjectOutputStream,套接字流也会自动关闭。
如果我是你,我会创建一个包含所需数据的新类,并仅发送此类的实例。
class TempObject {
public TempObject(Object[] array, String id) {
this.array = array;
this.id = id;
}
public Object[] array;
public String id;
}
private void Send() {
TempObject obj = new TempObject(array, id);
Socket s = new Socket("192.168.0.3", 7000);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(obj);
out.flush();
out.close();
}
答案 1 :(得分:0)
如果要发送多个元素,请使用表或集合。如果要发送string和int变量,可以创建自己的类来存储它们。