首页 > 代码库 > Java小项目点餐系统(二)之服务端
Java小项目点餐系统(二)之服务端
服务端详解:
服务端的主要功能就是无限监听一个端口号,对客户端发来的连接请求给予回应,然后开辟新线程处理客户端。界面做的比较简单就是显示在线的用户,分为商家和学生。
一.监听客户端的socket连接请求
<span style="font-family:KaiTi_GB2312;font-size:18px;">package mainjframe; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.LinkedList; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class MainWindow extends JFrame{ ServerSocket server; JTable user_table; JTable seller_table; JScrollPane user_jscrollPane; JScrollPane seller_jscrollPane; DefaultTableModel user_model; DefaultTableModel seller_model; String []user_headers = {"序号","在线学生"}; String []seller_headers = {"序号","在线商家"}; Object [][]cellData=http://www.mamicode.com/null; >在进程中使用while循环不断监听客户端发过来的请求,一旦请求建立成功就新建一个ServerThread子线程来处理客户端的请求,而主线程继续等待。同时开辟一个ListenThread线程不断判断哪一个线程已经断开连接。二.在ServerThread中对客户端的请求进行处理
<span style="font-family:KaiTi_GB2312;font-size:18px;">package mainjframe; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; public class ServerThread implements Runnable { private Socket socket; private String accept; String account,passwd; DataInputStream in = null; DataOutputStream out = null; LinkMySql linkMySql; String dept; private MainWindow mainWindow; // 创建静态全局变量 public ServerThread(Socket socket,MainWindow mainWindow) { this.mainWindow = mainWindow; this.socket = socket; linkMySql = new LinkMySql(this); } // 任务是为一个用户提供服务 @Override public void run() { try { // 读取客户端传过来信息的DataInputStream in = new DataInputStream(socket.getInputStream()); // 向客户端发送信息的DataOutputStream out = new DataOutputStream(socket.getOutputStream()); System.out.println("放马过来吧!!!!"); // 读取来自客户端的信息 accept = in.readUTF(); System.out.println(accept); } catch (IOException e) { e.printStackTrace(); } if(accept.equals("LOGIN")) { try { account = in.readUTF(); passwd = in.readUTF(); System.out.println("用户名:"+account+"\n密码:"+passwd); for(int i=0;i<mainWindow.student.size();i++) { if(account.equals(mainWindow.student.get(i).account)) { socket.close(); } } for(int i=0;i<mainWindow.seller.size();i++) { if(account.equals(mainWindow.seller.get(i).account)) { socket.close(); } } dept = linkMySql.query(account,passwd); out.writeUTF(dept); if(dept.equals("student")) { User temp = new User(); temp.account = account; temp.passwd = passwd; temp.type = "student"; temp.address = socket.getInetAddress(); mainWindow.student.add(temp); mainWindow.update(); linkMySql.initStudent(in,out); linkMySql.handleOrder(); } else if(dept.equals("seller")) { User temp = new User(); temp.account = account; temp.passwd = passwd; temp.type = "seller"; temp.address = socket.getInetAddress(); mainWindow.seller.add(temp); mainWindow.update(); linkMySql.initseller(in,out); } } catch(IOException e) { } } else if(accept.equals("REGISTER")) { } } } </span>先读取客户端发来的请求,然后进入对应的功能模块,如果是用户登录,则进行sql语句操作并对结果做出反应,如果查询错误则关闭该线程,判断为学生则加入学生链表并初始化学生端的商品信息和店铺信息,判断为商家则把改商家的商品信息发过去并查找相应的订单表,把属于该商家的订单发给商家。服务端的主要功能就是利用socket和多线程把学生端和商家端连接起来,并把所有对数据的操作集中在服务端来做,全部由服务端与数据库进行交互,保证数据的安全。
Java小项目点餐系统(二)之服务端
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。