码迷,mamicode.com
首页 > 其他好文 > 详细

2018.1.1T19-B3-U3jiangyi

时间:2018-01-07 00:43:44      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:post   stream   turn   反馈   信息   指定   nbsp   null   new   

package com.xdf.tcp;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;

/**  *  服务器  ===》超市  */ public class ServerSocketDemo {

 public static void main(String[] args) {   ServerSocket serverSocket = null; // 超市   Socket socket = null; // 顾客   InputStream inputStream = null; // 购物车   BufferedReader br = null; // 收银员   OutputStream outputStream = null; // 收银员的反馈   try {    // 在指定的位置创建一个超市    serverSocket = new ServerSocket(8800);    // 超市开门等待 顾客上门    socket = serverSocket.accept();    // 顾客开始购物    inputStream = socket.getInputStream();    // 收银员进行多次扫码    br = new BufferedReader(new InputStreamReader(inputStream));    String line = null;    while ((line = br.readLine()) != null) {     System.out.println("您购买的商品是===》" + line);    }    // 结束购物 不代表顾客 走出超市    socket.shutdownInput();    // 打开输出流 给顾客回馈 购物清单    outputStream = socket.getOutputStream();    outputStream.write("欢迎您下次光临".getBytes());   } catch (IOException e) {    e.printStackTrace();   } finally { // 释放资源    try {     outputStream.close();     socket.close();     br.close();     inputStream.close();     serverSocket.close();    } catch (IOException e) {     e.printStackTrace();    }   }

*************************************************

package com.xdf.tcp;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;

/**  * 客户端 ====》顾客  */ public class SocketDemo {

 public static void main(String[] args) {

  Socket socket = null; // 顾客   OutputStream outputStream = null;// 钱包   InputStream inputStream = null; // 收银员的回馈信息 购物清单   BufferedReader br = null; // 获取收银员的回馈信息   try {    socket = new Socket("localhost", 8800);    outputStream = socket.getOutputStream(); // 钱 从钱包出去    outputStream.write("回家的车票".getBytes());    // 购物完毕    socket.shutdownOutput();

   // 接收收银员的回馈信息    inputStream = socket.getInputStream();    br = new BufferedReader(new InputStreamReader(inputStream));    String line = null;    while ((line = br.readLine()) != null) {     System.out.println("收银员给我们的回馈信息是===》" + line);    }   } catch (UnknownHostException e) {    e.printStackTrace();   } catch (IOException e) {    e.printStackTrace();   } finally { // 释放资源    try {     br.close();     inputStream.close();     outputStream.close();     socket.close();    } catch (IOException e) {     e.printStackTrace();    }

  }

 }

}

**********************************

package com.xdf.tcp.thread;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;

/**  * 客户端1  */ public class Client {

 public static void main(String[] args) {   Socket socket = null;   InputStream inputStream = null;   OutputStream outputStream = null;   // 序列化   ObjectOutputStream oos = null;   BufferedReader br = null;   try {    // 创建客户端对象    socket = new Socket("localhost", 8800);    // 打开对应的输入和输出流    inputStream = socket.getInputStream();    outputStream = socket.getOutputStream();    // 用户开始登录    User user = new User("第一个用户", "111111");    // 序列化 给 服务器    oos = new ObjectOutputStream(outputStream);    oos.writeObject(user);    socket.shutdownOutput();

   // 接收服务器的回馈信息    br = new BufferedReader(new InputStreamReader(inputStream));    String line = null;    while ((line = br.readLine()) != null) {     System.out.println("服务器给我们的回馈信息是===》" + line);    }   } catch (UnknownHostException e) {    e.printStackTrace();   } catch (IOException e) {    e.printStackTrace();   } finally { // 释放资源    try {     br.close();     socket.close();     oos.close();     outputStream.close();     inputStream.close();    } catch (IOException e) {     e.printStackTrace();    }   }

 }

}**************************

package com.xdf.tcp.thread;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;

/**  * 客户端2  */ public class Client2 {

 public static void main(String[] args) {   Socket socket = null;   InputStream inputStream = null;   OutputStream outputStream = null;   // 序列化   ObjectOutputStream oos = null;   BufferedReader br = null;   try {    // 创建客户端对象    socket = new Socket("localhost", 8800);    // 打开对应的输入和输出流    inputStream = socket.getInputStream();    outputStream = socket.getOutputStream();    // 用户开始登录    User user = new User("第二个用户", "222222");    // 序列化 给 服务器    oos = new ObjectOutputStream(outputStream);    oos.writeObject(user);    socket.shutdownOutput();

   // 接收服务器的回馈信息    br = new BufferedReader(new InputStreamReader(inputStream));    String line = null;    while ((line = br.readLine()) != null) {     System.out.println("服务器给我们的回馈信息是===》" + line);    }   } catch (UnknownHostException e) {    e.printStackTrace();   } catch (IOException e) {    e.printStackTrace();   } finally { // 释放资源    try {     br.close();     socket.close();     oos.close();     outputStream.close();     inputStream.close();    } catch (IOException e) {     e.printStackTrace();    }   }

 }

}

*****************************

import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;

/**  * 服务器  */ public class Server {

 public static void main(String[] args) {

  ServerSocket serverSocket = null;   Socket socket = null;

  try {    // 实例化服务器    serverSocket = new ServerSocket(8800);    // 服务器 一直 开启 24营业    while (true) {     socket = serverSocket.accept();     // 每个顾客对应一个线程     UserThread thread = new UserThread(socket);     thread.start();    }

  } catch (IOException e) {    e.printStackTrace();   }  }

**********************************

package com.xdf.tcp.thread;

import java.io.Serializable;

public class User implements 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;  }

 public User() {   super();  }

 public User(String name, String password) {   super();   this.name = name;   this.password = password;  }

 @Override  public String toString() {   return "User [name=" + name + ", password=" + password + "]";  }

}*************************************

package com.xdf.tcp.thread;

import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.OutputStream; import java.net.Socket;

/**  * 用户的线程类   服务器端使用  */ public class UserThread extends Thread {  /**   * 因为run方法中要使用 定义成 全局变量   */  Socket socket = null;

 public UserThread(Socket socket) {   this.socket = socket;  }

 /**   * 获取登录用户的信息   输入流   * 并且给用户一个反馈   输出流   */  @Override  public void run() {   InputStream inputStream = null;   OutputStream outputStream = null;   // 反序列化 才能获取User对象的信息   ObjectInputStream ois = null;   try {    inputStream = socket.getInputStream();    outputStream = socket.getOutputStream();    ois = new ObjectInputStream(inputStream);    User user = (User) ois.readObject(); // 获取登录的用户信息    System.out.println("您的用户名是===》" + user.getName());    System.out.println("您的密码是===》" + user.getPassword());    socket.shutdownInput(); // 关闭用户的输入流    // 给用户的回馈信息    outputStream.write("恭喜您登录成功".getBytes());   } catch (IOException e) {    e.printStackTrace();   } catch (ClassNotFoundException e) {    e.printStackTrace();   } finally { // 释放资源    try {     outputStream.close();     socket.close();     ois.close();     inputStream.close();    } catch (IOException e) {     e.printStackTrace();    }   }

 }

}

*

 

2018.1.1T19-B3-U3jiangyi

标签:post   stream   turn   反馈   信息   指定   nbsp   null   new   

原文地址:https://www.cnblogs.com/xiaoxiao1016/p/8215772.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!