📄 serverimpl.java
字号:
package org.com.gather;
import java.net.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import org.com.gather.exception.*;
public class ServerImpl implements Server{
private Properties pro = null;
private Log log = null;
private BackUp back = null;
private DB db = null;
public ServerImpl(Properties pro){
this.pro = pro;
}
public void start(){
try{
ServerSocket serverSocket = new ServerSocket(new Integer(pro.getProperty("port")).intValue());
//通过多线程,实现时刻监听客户端
while(true){
Socket socket = serverSocket.accept();
Thread t = new ServerThread(socket,db,log,back);
t.start();
}
}catch(Exception e){
e.printStackTrace();
}
}
public void setLog(Log log){
this.log = log;
}
public void setBackUp(BackUp back){
this.back = back;
}
public void setTestDB(DB db){
this.db = db;
}
}
class ServerThread extends Thread{
private Socket socket = null;
private DB db = null;
private Log log = null;
private BackUp back = null;
private InputStream is = null;
private ObjectInputStream ois = null;
private Collection col = null;
public ServerThread(Socket socket,DB db,Log log,BackUp back){
this.socket = socket;
this.db = db;
this.log = log;
this.back = back;
}
public void run(){
System.out.println("服务器正在接收数据...");
try{
is = socket.getInputStream();
log.writeDebug("成功获得输入流;");
}catch(IOException e){
e.printStackTrace();
log.writeError("成功获得输入流;");
}
try{
ois = new ObjectInputStream(is);
}catch(IOException e){
log.writeError("包装对象流出异常;");
}
//从客户端接收到数据
try{
col = (Collection)ois.readObject();
Collection back_Collection = back.load();
if(!back_Collection.isEmpty()){
col.addAll(back_Collection);
back.clear();
}
try{
db.storeToDB(col);
}catch(SQLException e){
log.writeError("获取连接异常!");
back.storeForEmpty(col);
log.writeInfo("成功把数据备份到serverback;");
}catch(ClassNotFoundException e){
log.writeError(e.getMessage());
}catch(DBException e){
log.writeError("自定义异常被触发;");
}
}catch(IOException e){
e.printStackTrace();
log.writeError("IO异常 ;");
}catch(ClassNotFoundException e){
e.printStackTrace();
log.writeError("找不到类 ;");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -