문제:
AppMessage라는 직렬화 가능 클래스가 있는 시나리오를 고려해보세요. 소켓을 통해 다른 시스템으로 전송되고 수신된 바이트에서 다시 작성되어야 합니다. 목표는 Java에서 이 목표를 달성하기 위한 기술을 탐색하는 것입니다.
해결책:
전송을 위한 바이트 배열을 준비하려면 직렬화 방법을 활용하세요.
static byte[] serialize(final Object obj) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try (ObjectOutputStream out = new ObjectOutputStream(bos)) { out.writeObject(obj); out.flush(); return bos.toByteArray(); } catch (Exception ex) { throw new RuntimeException(ex); } }
반대로, 바이트 배열에서 객체를 다시 생성하려면 deserialize를 사용합니다. 메서드:
static Object deserialize(byte[] bytes) { ByteArrayInputStream bis = new ByteArrayInputStream(bytes); try (ObjectInput in = new ObjectInputStream(bis)) { return in.readObject(); } catch (Exception ex) { throw new RuntimeException(ex); } }
이러한 메서드를 사용하면 Java 객체의 효율적인 직렬화 및 역직렬화를 가능하게 하여 수신 시스템에서 재구성할 수 있도록 소켓을 통한 전송을 용이하게 합니다.
위 내용은 소켓 통신을 위해 Java 객체를 직렬화 및 역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!