package lmq.socket;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import lmq.entity.File;
import lmq.entity.User;
import lmq.util.CommandTransfer;
public class Client {
Socket socket = null;//客户端socket
Scanner sc = new Scanner(System.in);
User user = null;
File file = null;
public void showMenu() {
System.out.println("**************欢迎使用lmq的文件上传器************");
System.out.println("注册用户:1 \n用户登录:2 \n 退出:3");
System.out.println("*****************************************");
System.out.print("请选择:");
switch (sc.nextInt()) {
case 1:
doRegister();
break;
case 2:
doLogin();
break;
case 3:
System.out.println("谢谢,再见!");
System.exit(0);
default:
System.out.println("输入有误!");
break;
}
}
private void doLogin() {
user = new User();
CommandTransfer commandTransfer = new CommandTransfer();
int count = 0;
while(true){
count++;
//三次登录
if(count > 3){
System.out.println("抱歉,您已经用完三次机会,请下次登录!");
System.exit(0);
}
System.out.print("请输入用户名:");
user.setUserName(sc.next());
System.out.print("请输入密码:");
user.setUserPwd(sc.next());
commandTransfer.setData(user);
commandTransfer.setCmd("login");
try {
socket = new Socket("localhost",8888);
sendData(commandTransfer);//向服务器发送数据
commandTransfer = getData();//获取服务器的数据
System.out.println(commandTransfer.getResult());
System.out.println("**************************");
if(commandTransfer.isFlag()){
break;
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
doUpload();
}
/**
* 上传文件
*/
private void doUpload() {
CommandTransfer commandTransfer = new CommandTransfer();
file = new File();
while(true){
InputStream is = null;
BufferedInputStream bis = null;
String fname = null;
byte[] buffer = null;
System.out.println("请选择需要上传的文件路径:例如(d:/1.jpg)");
String path = sc.next();
//通过输入流读取本地文件
try {
is = new FileInputStream(path);
bis = new BufferedInputStream(is);
buffer = new byte[bis.available()];
//获取文件名
fname = path.substring(path.lastIndexOf("/")+1);
bis.read(buffer);
//封装file数据对象
file.setFname(fname);
file.setFcontent(buffer);
} catch (FileNotFoundException e1) {
System.out.println("文件不存在!");
continue;
} catch (IOException e) {
e.printStackTrace();
}finally{//关闭io流
if(null!=bis){
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
bis = null;
}
}
if(null!=is){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
is = null;
}
}
}
try {
socket = new Socket("localhost",8888);
commandTransfer.setData(file);
commandTransfer.setCmd("upload");
sendData(commandTransfer);
commandTransfer = getData();
System.out.println(commandTransfer.getResult());
if(commandTransfer.isFlag()){
break;
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("谢谢使用文件本上传器");
}
private void doRegister() {
user = new User();
CommandTransfer commandTransfer = new CommandTransfer();
while(true){
System.out.print("请输入用户名:");
user.setUserName(sc.next());
System.out.print("请输入密码:");
user.setUserPwd(sc.next());
System.out.print("请再次确认密码:");
String rePassword = sc.next();
if(!rePassword.equals(user.getUserPwd())){
System.out.println("**********两次输入的密码不一致***********");
continue;
}
commandTransfer.setCmd("register");
commandTransfer.setData(user);
try {
socket = new Socket("localhost", 8888);
sendData(commandTransfer);//发送数据给服务器
commandTransfer = getData();//获取服务器返回的数据
System.out.println(commandTransfer.getResult());
System.out.println("***************************");
if(commandTransfer.isFlag()){
break;//如果注册成功,则不再重复注册
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//注册成功直接登入
doLogin();
}
/**
* 获取服务器返回的数据
* @return
*/
private CommandTransfer getData() {
InputStream is;
ObjectInputStream osi;
CommandTransfer commandTransfer = null;
try {
is = socket.getInputStream();
osi = new ObjectInputStream(is);
commandTransfer= (CommandTransfer) osi.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return commandTransfer;
}
/**
* 向服务器发送数据
* @param commandTransfer
*/
private void sendData(CommandTransfer commandTransfer) {
try {
OutputStream os = socket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(commandTransfer);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MySocketUploader.zip (27个子文件)
MySocketUploader
bin
jdbc.properties 110B
lmq
socket
SocketThread.class 3KB
Server.class 2KB
StartClient.class 508B
Client.class 7KB
service
Test.class 1KB
FileService.class 2KB
UserService.class 2KB
entity
User.class 1KB
File.class 1KB
util
JdbcUtils.class 2KB
CommandTransfer.class 1KB
src
jdbc.properties 110B
lmq
socket
Server.java 1KB
SocketThread.java 2KB
StartClient.java 205B
Client.java 6KB
service
UserService.java 1KB
Test.java 2KB
FileService.java 895B
entity
User.java 790B
File.java 783B
util
JdbcUtils.java 2KB
CommandTransfer.java 921B
.project 392B
.classpath 309B
lib
mysql-connector-java-5.1.6-bin.jar 687KB
共 27 条
- 1
资源评论
- wl0762018-05-29很好,值得拥有。
- m0_377165462019-06-20很好,有界面就完美了
- li95812019-01-22很好,值得拥有
刘皇叔9527
- 粉丝: 7
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功