会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132437个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2626楼

服务端启动正常,客户端启动就报错

package com.yc.server;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        System.out.println("--------服务器启动---------");
        //创建ServerSocket对象
        ServerSocket sever=new ServerSocket(10000);
        Socket socket=sever.accept();
        //获取输入流,包装成对象流
        ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());
        User user=(User)ois.readObject();
        String str="";
        //对用户和密码验证
        if("name1".equals(user.getUserName())&&"123456".equals(user.getPassWord())){
            str="登陆成功";
        }else{
            str="账号密码不正确";
        }
        //获取输出流,包装成数据流
        DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
        dos.writeUTF(str);
        //关闭流
        if(dos!=null){
            dos.close();
        }
        if(ois!=null){
            ois.close();
        }
        if(socket!=null){
            socket.close();
        }
    }
}
package com.yc.test;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class Client {
    public static void main(String[] args) throws IOException {
        //创建Socket对象,连接服务器
        Socket client=new Socket("localhost",10000);
        //获取输出流(对象流)
        ObjectOutputStream oos=new ObjectOutputStream(client.getOutputStream());
        //创建User对象
        User u=new User("name1","123456");
        //User对象发送到服务器
        oos.writeObject(u);
        //获取输入流(数据流)
        DataInputStream dis=new DataInputStream(client.getInputStream());
        System.out.println(dis.readUTF());
        if(dis!=null){
            dis.close();
        }
        if(oos!=null){
            oos.close();
        }
        if(client!=null){
            client.close();
        }
    }
}

图片.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2627楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2628楼

import com.Jin.FuWuQi.KeHuDuan.IOClose;


import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server2 {
    public static void main(String[] args) {
        String CRLF = "\r\n";//换行
        String BLANK = " ";//空格

        ServerSocket server = null;
        Socket client = null;
        InputStream is = null;
        try {
            //(1)创建ServerSocket对象
            server = new ServerSocket(8888);
            //(2)监听是否有客户端发送请求
            client = server.accept();
            //获取来自浏览器的请求信息
            is = client.getInputStream();
            byte []buf = new byte[20480];
            int len = is.read(buf);
            System.out.println(new String(buf,0,len));
            /**
             * 对wed浏览器的请求作出响应
             */
            StringBuilder sb = new StringBuilder();
            StringBuilder sbContent = new StringBuilder();//请求文本
            sbContent.append("<html><head><title>响应结果</title></head>");
            sbContent.append("<body>登陆成功</body></html>");
            //1.拼接响应头
            sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK");
            sb.append(CRLF);
            sb.append("Content-Type: text/html;charset=uft-8");
            sb.append(CRLF);
            sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF);
            sb.append(CRLF);//换行,代表响应头与响应正文部门之间的空行
            sb.append(sbContent);

            //通过流输出
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
            bw.write(sb.toString());
            bw.flush();
            bw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //(6)关闭流
            IOClose.closeAll(is,client,server);
        }

    }
}

image.png

运行都正常,登陆也没问题

就是一进去就乱码image.png

改编码格式,改成UTF-8,也是显示乱码,到底是哪里出了问题呢

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2632楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2636楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2637楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 2640楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637