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



