📄 orderstatusserver.java
字号:
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.net.ServerSocket;import java.sql.*;public class OrderStatusServer { private int port = 1921; private ServerSocket serverSocket; static final String dbURL = "jdbc:mysql://localhost/j2mebook?" + "user=j2meapps&password=bigsecret"; public OrderStatusServer() throws ClassNotFoundException { Class.forName("org.gjt.mm.mysql.Driver"); } public void acceptConnections() { try { serverSocket = new ServerSocket(1921); } catch (IOException e) { System.err.println("ServerSocket instantiation failure"); e.printStackTrace(); System.exit(0); } while (true) { try { Socket newConnection = serverSocket.accept(); System.out.println("accepted connection"); ServerThread st = new ServerThread(newConnection); new Thread(st).start(); } catch (IOException ioe) { System.err.println("server accept failed"); } } } public static void main(String args[]) { OrderStatusServer server = null; try { server = new OrderStatusServer(); } catch (ClassNotFoundException e) { System.out.println("unable to load JDBC driver"); e.printStackTrace(); System.exit(1); } server.acceptConnections(); } class ServerThread implements Runnable { private Socket socket; private DataInputStream datain; private DataOutputStream dataout; public ServerThread(Socket socket) { this.socket = socket; } public void run() { try { datain = new DataInputStream(new BufferedInputStream (socket.getInputStream())); dataout = new DataOutputStream(new BufferedOutputStream (socket.getOutputStream())); } catch (IOException e) { return; } byte[] ba = new byte[6]; boolean conversationActive = true; while(conversationActive) { String orderNumber = null; try { datain.read(ba,0,6); orderNumber = new String(ba); if (orderNumber.toUpperCase().charAt(0) == 'Q') { conversationActive = false; } else { System.out.println("order number = " + orderNumber); String status = getStatus(orderNumber); System.out.println("status: " + status); dataout.write(status.getBytes(),0,status.length()); dataout.write("\n".getBytes(),0,1); dataout.flush(); } } catch (IOException ioe) { conversationActive = false; } } try { System.out.println("closing socket"); datain.close(); dataout.close(); socket.close(); } catch (IOException e) { } } private String getStatus(String orderNumber) { String status = "Not on file"; Connection conn = null; try { conn = DriverManager.getConnection(dbURL); Statement stmt = conn.createStatement(); String query = "SELECT status FROM orders " + "WHERE ordernumber = " + orderNumber; ResultSet rs = stmt.executeQuery(query); if (rs.next()) { status = rs.getString(1); } } catch (SQLException e) { status = "server error"; } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { } } } return status; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -