求你了,我需要你的帮助。
我正在使用TCP连接在java服务器和android应用程序客户端之间建立TCP连接。假设我将发送一个序列化对象,但是每次在客户端,代码都会在中的Obj=(Person)处被阻塞。readObject;其中in是数据对象InputStream,Person是序列化对象。
然而,如果我发送的是字符串或整数,并且我使用Obj=in,代码就可以工作。readObject;直接地
所以请我需要知道我可以添加什么才能成功反序列化。
或者arraylist只是字符串,那么我该怎么办呢
lst = (ListView) findViewById(R.id.list);
al = new ArrayList<String>();
ad = new ArrayAdapter<String>(this,R.layout.list, al);
try {
socket = new Socket("192.168.0.103", 8888);
in = new ObjectInputStream(socket.getInputStream());
Object obj = null;
while ((obj = in.readObject()) != null) {
if (obj instanceof Person) {
al.add(((Person) obj).toString());
lst.setAdapter(ad);
}}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
finally{
if (in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
socket = serverSocket.accept();
oos = new ObjectOutputStream(socket.getOutputStream());
Person person = new Person();
person.setFirstName("James");
person.setLastName("Ryan");
person.setAge(19);
String a = "Ahmed";
oos.writeObject(a);
oos.writeObject(person);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
finally{
if( oos!= null){
try {
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
public class Person implements Serializable {
private String firstName;
private String lastName;
private int age;
public Person() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(firstName);
buffer.append("\n");
buffer.append(lastName);
buffer.append("\n");
buffer.append(age);
buffer.append("\n");
return buffer.toString();
}
这里有几个问题。
首先,readObject()在EOS时不返回null,因此循环条件是错误的。它抛出EOFEException,所以你需要捕捉它。
其次,我不知道为什么要使用序列化,如果您想要的只是接收对象上的toString()的结果。
第三,代码中没有抛出FileNotFoundException的内容,所以捕获它的原因是个谜。
第四,如果接收到的对象不是Person的实例,那么您的代码就不可能表现出这一点。
我第一次使用带有IISExpress的新Visual Studio 2013(以前 ASP.net VS2010上的开发服务器使用)。我在尝试调试项目时遇到问题。 这是我在Chrome看到的: 无法与服务器建立安全连接。这可能是服务器的问题,也可能需要您没有的客户端身份验证证书。错误代码:ERR_SSL_PROTOCOL_ERROR 我更新了我的计划—— 与localhost的连接中断。错误代码:
乡亲们, 我在BigQuery中使用融合连接器进行数据传输。对于每个事件,我都创建了一个将在BigQuery中解释的avro模式。是否可以将任何事件字段定义为表分区? 它目前正在使用_PARTITIONTIME隐藏字段,但我需要它成为实际事件的字段,以便更容易处理重复。
问题内容: 只是从github交叉发布。 我将xorm 0.4.3与go-mysql一起使用。我们使用Golang 1.4。 我们在和中指定了以下内容: 而且我们使用相同的单个实例来查询Mysql。 但是我们仍然看到很多连接的状态,这是远远超过这些数字我已经配置和 我们国家的时候- 我们还观察到,即使我们停止MySQL,连接号仍保持固定但处于状态。如果我们关闭应用程序,则所有连接都会消失。 但是在
问题内容: 我正在使用套接字连接我的Android应用程序(客户端)和Java后端服务器。每次与服务器通信时,我都希望从客户端发送两个数据变量。 1)某种消息(由用户通过界面定义) 2)消息的语言(由用户通过界面定义) 我该如何发送这些消息,以便服务器将每个消息解释为一个单独的实体? 在读取了服务器端的数据并做出了适当的结论之后,我想向客户端返回一条消息。(我想我会没事的) 因此,我的两个问题是如
问题内容: 我在两个表之间有多对多关系。 表包含我的餐厅。 表包含不同的类别。 表包含两列,每列分别包含两个表的ID。 以下陈述是我能想到的,但没有给我我想要的输出。 我希望输出是有关餐厅的信息,并在最后一列中是类别的连接行。 问题答案: 要串联值,可以使用。xml路径解决方案有误,应使用和特殊字符。 您也可以使用变量解决方案
问题内容: 我试图绕过 ObjectInputStream / ObjectOutputStream ,所以我创建了一个非常简单的服务器- 客户端应用程序,其中客户端通过创建的流发送HashMap对象,服务器接收并打印该对象。 这是我的服务器代码: 这是我的客户代码: 我运行服务器文件,它运行正常。 然后运行客户端文件,并在服务器上收到以下错误: PS我不知道我是否需要做一些事情来序列化HashM