昨天看了一下对象流的方法,使用对象流可以在服务器与客户端通讯时,省去考虑如何同时传输多条信息,直接把对应信息封装到对象流中即可,例如用户名和密码,当然XML可能会更好用,这里先写对象流,因为比较好实现
代码如下:
服务器端:
//实现对象流 这样对于传输用户名密码等信息时 不需要考虑空格等问题
package com.ServerTest4;
import java.net.*;
import java.io.*;
import com.common.User;
public class MyServer4 {
public MyServer4(){
try {
System.out.println("在9999端口等待。。。");
//对本机接口实现监听
ServerSocket ss = new ServerSocket(3456);
//等待连接
Socket s = ss.accept();
System.out.println("连接成功");
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
//准备接收信息
System.out.println("接收到信息:");
Object o = ois.readObject();
User u = (User)o;
System.out.println(u.getName()+u.getPassword());
s.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyServer4 ms4 = new MyServer4();
}
}
客户端:
package com.ClientTest4;
import java.io.*;
import java.net.*;
import com.common.User;
public class MyClient4 {
public MyClient4(){
try {
Socket s = new Socket("127.0.0.1",3456);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
User u = new User();
u.setName("dou");
u.setPassword("123");
System.out.println("我向客户端发送了信息:"+u.getName()+u.getPassword());
oos.writeObject(u);
s.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyClient4 mc4 = new MyClient4();
}
}
对象流类:
package com.common;
//注意 由于java要求传送对象时必须序列化 因此要实现对应接口
public class User implements java.io.Serializable{
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
注意::
对象流类要在两个工程文件中都存在,却必须一致!!!!
就像这样,com.common包中都有对象流类

运行结果就不贴图了,如果把对象流文件和客户端或服务器端文件放在一起,总是会显示classnotfoundexception 我用的是Myeclipse6.5 如果哪位高手知道是怎么回事,麻烦跟小弟说一声,留个言,万分感谢