Socket网络编程,如何处理客户端发送的数据类别

Socket网络编程,如何处理客户端发送的数据类别,第1张

Socket网络编程,如何处理客户端发送的数据类别

在自学的路上越陷越深,相信很多新手和我一样,对于网络编程总是很懵,网络上资源很多,但是具体解决问题的很少,基本上都是理论知识,这对一个新手来说是不可接受的,而我也是现学现用,不能分析的太深,讲到这,首先需要的就是一个封装类了,因为我们发送的消息可能包含是文件或者只有消息,如果没有封装类来解析的话,问题就会很复杂。
前面的文章已经讲过了封装类,所以这里就直接跳过,不懂的可以去我的上一张博客查看了解一下,直接上代码

客户端:

public class ClientSocket {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("127.0.0.1",9999);
            OutputStream os = socket.getOutputStream();
//            包装流
            ObjectOutputStream oos = new ObjectOutputStream(os);
//            标志位
            oos.writeUTF("info");
//            封装类
            Student stu = new Student();
            stu.setUsername("张三");
            stu.setSex("男");
            stu.setAddress("贵州");
            oos.writeObject(stu);
            if (os != null) {
                os.close();
            }
            if (oos != null) {
                oos.close();
            }
            if (socket != null) {
                socket.close();
            }
            System.out.println("发送成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服务端:

public class ServerSocketTest {
    public static void main(String[] args) {
        try {
            
            ServerSocket serverSocket = new ServerSocket(9999);
//            监听9999端口
            Socket socket = serverSocket.accept();
            InputStream is = socket.getInputStream();
            ObjectInputStream ois = new ObjectInputStream(is);
//            标志位,用来判断客户端发送的数据处理方式
            String state = ois.readUTF();
//            如果你不太了解标志位,可以设置成web形式的映射路径,处理对应的内容即可
            if ("info".equals(state)) {
                System.out.println("收到的信息为:" + state);
                Student stu = (Student) ois.readObject();
                System.out.println("内容是:");
                System.out.println("姓名:" + stu.getUsername());
                System.out.println("性别:" + stu.getSex());
                System.out.println("地址:" + stu.getAddress());
            }
            if ("file".equals(state)){
                
            }
            if (is != null) {
                is.close();
            }
            if (ois != null){
                ois.close();
            }
            if (socket != null){
                socket.close();
            }
            if (serverSocket != null){
                serverSocket.close();
            }
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

结果:

新手入坑,欢迎发表建议

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5563216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存