📄 skillsserver.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 SkillsServer {
private int port = 1927;
private ServerSocket serverSocket;
static final String dbURL =
"jdbc:mysql://localhost/j2mebook?" +
"user=j2meapps&password=bigsecret";
public SkillsServer() throws ClassNotFoundException {
Class.forName("org.gjt.mm.mysql.Driver");
}
public void acceptConnections() {
try {
serverSocket = new ServerSocket(port);
}
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[]) {
SkillsServer server = null;
try {
server = new SkillsServer();
}
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 skill = null;
try {
datain.read(ba,0,6);
skill = new String(ba);
if ((skill.length() == 1) &&
(skill.toUpperCase().charAt(0) == 'Q')) {
conversationActive = false;
}
else {
System.out.println("requested skill = " + skill);
String names = getNames(skill);
System.out.println("names: " + names);
System.out.println("writing " + names.length() + " bytes");
dataout.write(names.getBytes(),0,names.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 getNames(String skill) {
String result = "None available";
Connection conn = null;
try {
conn = DriverManager.getConnection(dbURL);
Statement stmt = conn.createStatement();
String query = "SELECT lastname, firstname " +
"FROM skills " + "WHERE skill = " +
"'" + skill.trim() + "'" +
" ORDER BY lastname";
System.out.println("query = " + query);
ResultSet rs = stmt.executeQuery(query);
StringBuffer sb = new StringBuffer();
while (rs.next()) {
sb.append(rs.getString(1));
sb.append(", ");
sb.append(rs.getString(2));
sb.append('$');
}
result = sb.toString();
}
catch (SQLException e) {
System.out.println(e.getMessage());
result = "server error";
}
finally {
if (conn != null) {
try {
conn.close();
}
catch (SQLException e) {
}
}
}
return result;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -