java让代码不往下走_为什么程序不往下走了,关掉一个运行的程序会立马报java.net.SocketException: Connection reset的异常...

源自:6-2 综合练习---实现分析

为什么程序不往下走了,关掉一个运行的程序会立马报java.net.SocketException: Connection reset的异常

3c05d3e2bf3ca691078cae0169823962.png

功能1也试过,都没有反应了,求解public class socketClient {

private Scanner input = new Scanner(System.in);

private Socket socket=null;

private ObjectOutputStream oos;

private ObjectInputStream ois;

public void shouMainMenu() {

System.out.println("***欢迎使用文件上传器***");

System.out.println("---登录请按1---");

System.out.println("---注册请按2---");

System.out.println("---退出请按3---");

System.out.println("***********************");

System.out.println("请选择");

int choice = input.nextInt();

switch (choice) {

case 1:

showLogin();

break;

case 2:

showRegister();

break;

case 3:

System.out.println("再见");

System.exit(0);

default:

System.out.println("输入有误");

System.exit(0);

}

}

/**

* 登录

*/

public void showLogin() {

User user = new User();

int count = 0;

CommandTransfer transfer = new CommandTransfer();

while (true) {

count++;

if (count > 3) {

System.out.println("你已经三次登录失败,程序退出");

System.exit(0);

}

System.out.println("请输入用户名:");

user.setUsername(input.next());

System.out.println("请输入密码:");

user.setPassword(input.next());

transfer.setCmd("login");

transfer.setData(user);

try {

socket = new Socket("localhost", 8888);

sendData(transfer);

transfer = getData();

System.out.println(transfer.getResult());

System.out.println("*********************************");

if (transfer.isFlag()) {

break;

}

} catch (IOException e) {

e.printStackTrace();

} finally {

close();

}

}

showUploadFile();

}

/**

* 注册

*/

public void showRegister() {

User user = new User();

CommandTransfer transfer = new CommandTransfer();

while (true) {

System.out.println("请输入用户名:");

user.setUsername(input.next());

System.out.println("请输入密码:");

user.setPassword(input.next());

System.out.println("请再次输入密码:");

String rePassword = input.next();

if (!user.getPassword().equals(rePassword)) {

System.out.println("2次密码不一致");

System.out.println("*********************************");

continue;

}

transfer.setCmd("register");

transfer.setData(user);

try {

socket = new Socket("localhost", 8888);

sendData(transfer);

transfer = getData();

System.out.println(transfer.getResult());

System.out.println("*********************************");

if (transfer.isFlag()) {

break;

}

} catch (IOException e) {

e.printStackTrace();

} finally {

close();

}

}

showLogin();

}

/**

* 上传文件

*/

public void showUploadFile() {

File file = new File();

FileInputStream fis = null;

BufferedInputStream bis = null;

CommandTransfer transfer = new CommandTransfer();

while (true) {

System.out.println("请输入文件的绝对路径");

String path = input.next();

String fname = path.substring(path.lastIndexOf("/") + 1);

file.setFname(fname);

try {

fis = new FileInputStream(path);

bis = new BufferedInputStream(fis);

byte[] fcontent = new byte[fis.available()];

bis.read(fcontent);

file.setFname(fname);

file.setFconcent(fcontent);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

bis.close();

fis.close();

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

transfer.setCmd("save");

transfer.setData(file);

try {

// 将数据传递给服务器

socket = new Socket("localhost", 8888);

sendData(transfer);

transfer = getData();

System.out.println(transfer.getResult());

System.out.println("*********************************");

} catch (IOException e) {

e.printStackTrace();

} finally {

close();

}

}

}

/**

* 发送数据

*/

public void sendData(CommandTransfer transfer) {

try {

socket = new Socket("localhost", 8888);

oos = new ObjectOutputStream(socket.getOutputStream());

oos.writeObject(transfer);

oos.flush();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 接收数据

*/

public CommandTransfer getData() {

CommandTransfer transfer=new CommandTransfer();

try {

socket = new Socket("localhost", 8888);

InputStream inputStream = socket.getInputStream();

ois = new ObjectInputStream(inputStream);

transfer = (CommandTransfer) ois.readObject();

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

return transfer;

}

/**

* 关闭连接

*/

public void close() {

try {

if (ois != null)

ois.close();

if (oos != null)

oos.close();

if (socket != null)

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

提问者:机智的意竹竹

2017-07-12 20:48

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值