Socket编程的Connection reset 问题 求解
凌乱533 2016-12-18 11:15:23
我想用readObject 的方法把对象发送给服务器 但总是运行到din=new ObjectInputStream(socket.getInputStream());的时候就报错 Connection reset 用readUTF方法可以正常读取 为什么呢?
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.zms.utils.DbUtil;
public class ServerClient implements Runnable{
private static ServerSocket s_socket;
private static Socket socket;
private InputStream in;
private OutputStream out;
private ObjectInputStream din;
private ObjectOutputStream dout;
private DbUtil db=new DbUtil();
public void run() {
try {
din=new ObjectInputStream(socket.getInputStream());
dout=new ObjectOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("连接。。");
Object obj;
try {
obj = din.readObject();
if(obj.getClass().getName().equals("UserInfo")){
verifylogin(obj);
}
} catch (ClassNotFoundException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
s_socket=new ServerSocket(4321);
System.out.println("fuwuqi ");
while(true){
socket=s_socket.accept();
ServerClient sc=new ServerClient();
Thread t=new Thread(sc);
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void verifylogin(Object obj) throws SQLException{ //验证方法
System.out.println(obj.toString());
/*//List<Map<String,Object>> list=db.query("select * from userinfo where account=? and userpasw=?",new Object[]{username,pasw});
//if(list.size()>0){
System.out.println(db.update("update userinfo set online=? where account=?",new Object[]{"是",username}));
try {
dout.writeUTF("登陆成功!");
} catch (IOException e) {
e.printStackTrace();
}
}else{
try {
dout.writeUTF("登录失败!");
} catch (IOException e) {
e.printStackTrace();
}
}*/
}
}