package服务器端相关操作;importjava.io.Serializable;/** 创建存储需要传输信息的对象,方便客户端向服务器端传送数据*/
public class ClientToServerInfo implementsSerializable{
String sign;
String name;
String password_OR_path;//重写构造函数
publicClientToServerInfo(String sign,String name,String password_OR_path){this.sign=sign;this.name=name;this.password_OR_path=password_OR_path;
}publicString getSign() {returnsign;
}public voidsetSign(String sign) {this.sign =sign;
}publicString getName() {returnname;
}public voidsetName(String Name) {this.name =name;
}publicString getPassword_OR_path() {returnpassword_OR_path;
}public voidsetPassword_OR_path(String password_OR_path) {this.password_OR_path =password_OR_path;
}
@OverridepublicString toString() {return "客户端说: [sign=" + sign + ", name=" + name + ", password_OR_path=" +password_OR_path + "]";
}
}importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;/** 服务器端主程序操作*/
public classServer {public static voidmain(String[] args) {try{//1.创建服务器端的ServerSocket,指定伴随的端口号
ServerSocket serversocket=new ServerSocket(8880);
System.out.println("****服务器端即将启动,等待客户端*****");//提示服务器开启
Socket socket=null;while(true){//2.调用accept()方法开始监听,等待客户端连接
socket=serversocket.accept();//调用线程
ServerThread st=newServerThread(socket);
st.start();
}
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.ObjectInputStream;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.net.Socket;importjava.sql.SQLException;importServer_To_Client_Response.Add_File_Response;importServer_To_Client_Response.Add_User_Response;importServer_To_Client_Response.Select_User_Response;public class ServerThread extendsThread {//创建与本线程相关的socket
Socket socket=null;
ObjectInputStream ois=null;//重写构造函数
publicServerThread(Socket socket){this.socket=socket;
}//线程操作 获取输出流,响应客户端的请求
public voidrun(){try{//3.获取输入流,并读取客户端信息
ois=newObjectInputStream(socket.getInputStream());/** 读取接收到的对象信息*/
while( ois.available()!=-1){
ClientToServerInfo ctsi=(ClientToServerInfo)ois.readObject();
System.out.println(ctsi.toString());//打印客户端传到服务器的数据(对象)
/** 需要客户端传入的对象数据进行分析,根据传入的sign标志值进行相应的操作
* sign="1"完成注册会员操作,链接数据库,向数据库中user表添加记录
* sign="2"完成会员登录操作,连接数据库,在数据库中user表查询记录
* sign="3"完成文件上传操作,连接数据库,向数据库中file表添加记录*/
//System.out.println(ctsi.sign);
if(ctsi.sign.equals("1")){//调用 Add_User_Response类的构造方法对客户端传入的信息进行详细的响应
Add_User_Response aur=newAdd_User_Response(socket, ctsi.name,ctsi.password_OR_path);//System.out.println("运行完Add_User_Response类");
break;
}if(ctsi.sign.equals("2")){//调用 Select_User_Response类的构造方法对客户端传入的信息进行详细的响应
Select_User_Response sur=newSelect_User_Response(socket, ctsi.name,ctsi.password_OR_path);//System.out.println("运行完 Select_User_Response类");
break;
}if(ctsi.sign.equals("3")){//调用 Add_File_Response类的构造方法对客户端传入的信息进行详细的响应
Add_File_Response afr=newAdd_File_Response(socket, ctsi.name,ctsi.password_OR_path);//System.out.println("运行完 Add_File_Response类");
break;
}
}//5.关闭资源
ois.close();
}catch(ClassNotFoundException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}catch(SQLException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}