问答详情
源自:6-2 综合练习---实现分析

服务器端报错:java.net.SocketException: Connection reset

http://img.mukewang.com/581d9c330001bc7109790249.jpg

package com.imooc.thread;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

import com.jinxin.entity.File;
import com.jinxin.entity.User;
import com.jinxin.service.FileService;
import com.jinxin.service.UserService;
import com.jinxin.util.CommandTransfer;

public class ServerThread extends Thread {
	//和本线程相关的socket
		Socket socket;
		public ServerThread (Socket socket){
			this.socket =socket;
			
		}
		public void run(){
				//3.创建输入流,并读取客户端信息
			try {
				InputStream is = socket.getInputStream();
				ObjectInputStream ois = new ObjectInputStream(is);//这是28行
				CommandTransfer com=null;
				try {
					com = (CommandTransfer)ois.readObject();
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				operate(socket,com);
				socket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		public void operate(Socket socket ,CommandTransfer com) throws IOException{
			if(com.getCmd().equals("select")){
				UserService userService = new UserService();
				if(userService.ckeckout((User)com.getData())){
					socket.shutdownInput();
					OutputStream os = socket.getOutputStream();
					ObjectOutputStream oos = new ObjectOutputStream(os);
					com.setFlag(true);
					oos.writeObject(com);
					oos.flush();
					socket.shutdownOutput();
				}else{
					socket.shutdownInput();
					OutputStream os = socket.getOutputStream();
					ObjectOutputStream oos = new ObjectOutputStream(os);
					com.setFlag(false);
					oos.writeObject(com);
					oos.flush();
					socket.shutdownOutput();
				}
			}
			if(com.getCmd().equals("register")){
				UserService userService = new UserService();
				if(userService.ckeckout((User)com.getData())){
					socket.shutdownInput();
					OutputStream os = socket.getOutputStream();
					ObjectOutputStream oos = new ObjectOutputStream(os);
					com.setFlag(false);
					oos.writeObject(com);
					oos.flush();
					socket.shutdownOutput();
				}else{
					userService.register((User)com.getData());
					socket.shutdownInput();
					OutputStream os = socket.getOutputStream();
					ObjectOutputStream oos = new ObjectOutputStream(os);
					com.setFlag(true);
					oos.writeObject(com);
					oos.flush();
					socket.shutdownOutput();
				}
			}
			if(com.getCmd().equals("upload")){
				FileService fileService = new FileService();
				fileService.upload((File)com.getData());
				socket.shutdownInput();
			}
		}
}

这是项目地址:http://www.imooc.com/opus/resource?opus_id=3426

提问者:qq_昼绽_0 2016-11-05 16:46

个回答

  • 寻梦123
    2016-11-07 14:08:03
    已采纳

    先启动服务器,再启动客户端。

  • 夏虫ljw
    2016-12-14 20:29:08

    请问下是什么原因造成的?卡在这边过不去了,一直没找到原因

  • 慕粉4005235
    2016-11-28 22:23:16

    求告知怎么解决的?我也遇到这个问题