服务器端:
/**
*
* @author Tuerlechat,
* 模拟用户登录的功能 (序列化对象)
* 需求说明
模拟用户登录的功能
实现客户发送登录用户信息,服务器端显示登录信并响应给客户端登录成功
*/
public class LoginServer {
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
System.out.println("------------服务器端-------------");
//设立端口号
ServerSocket serverSocket = new ServerSocket(9999);
//等待客户端接入
Socket socket = serverSocket.accept();
//输入对象流
InputStream is = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
//用新对象强转接收输入的对象
UserVo userVo = (UserVo) ois.readObject();
//打印获得到的对象信息
System.out.println("客户端说:用户名为:" + userVo.getName() + ",密码为:" + userVo.getPwd());
//输出对象流
OutputStream os = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("登录成功!!!欢迎" + userVo.getName() + "用户登录。");
//冲刷缓冲区(否则输入空白!!!)
bw.flush();
//关闭流
bw.close();
os.close();
ois.close();
is.close();
socket.close();
}
}
客户端:
/**
*
* @author Tuerlechat,
* 客户端
*
*/
public class LoginClient {
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
System.out.println("-------------客户端----------------");
//设定ip地址和端口号
Socket socket = new Socket("localhost", 9999);
//输出对象流
OutputStream os = socket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
//实例化UserVo对象
UserVo userVo = new UserVo("Tom","wodemimashiTom.");
//把对象写入
oos.writeObject(userVo);
//输入字符流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//读取服务端返回给客户端的信息
String info;
while ((info = br.readLine()) != null) {
System.out.println("服务器说:" + info);
}
//关闭流
br.close();
oos.close();
os.close();
socket.close();
}
}
UserVo类:
/**
* 序列化对象实体类
* @author Tuerlechat,
*
*/
public class UserVo implements Serializable {
private String name;
public String getName() {
return name;
}
public UserVo(String name, String pwd) {
super();
this.name = name;
this.pwd = pwd;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
private String pwd;
}