在自学的路上越陷越深,相信很多新手和我一样,对于网络编程总是很懵,网络上资源很多,但是具体解决问题的很少,基本上都是理论知识,这对一个新手来说是不可接受的,而我也是现学现用,不能分析的太深,讲到这,首先需要的就是一个封装类了,因为我们发送的消息可能包含是文件或者只有消息,如果没有封装类来解析的话,问题就会很复杂。
前面的文章已经讲过了封装类,所以这里就直接跳过,不懂的可以去我的上一张博客查看了解一下,直接上代码
客户端:
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(); } } }
结果:
新手入坑,欢迎发表建议
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)