본문 바로가기
  • fishing...
  • eating...
MISCELLANEOUSNESS

객체 직렬화와 Socket 전송

by 회색뿔 2008. 1. 14.


객체 직렬화
객체 직렬화의 이점:
데이터 영속성 확보
(데이터 영속성: 자료를 저장한 이후 재사용 시 프로그램 동작시와 똑같은 구조를 가짐)
데이터 전송시 용이성 제공

import java.io.File;
import java.io.Serializable;

public class data implements Serializable
{
     private String szStr;
     protected int n;

     private data()
     {
     }

     public getString()
     {
          return szStr;
     }

     public getInt()
     {
          return n;
     }

     ....    

     // 기본 writeObject
     /*
     private void writeObject( ObjectOutputStream stream ) throws IOException
     {
          stream.defaultWriteObject();
     }
     */
}


객체 전송
서버측


// 필요한 헤더파일
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

// 객체 선언 및 초기화
private Socket Client = null;
private ObjectInputStream ois;
private ObjectOutputStream oos;
 
oos = new ObjectOutputStream( Client.getOutputStream() );
oos.flush();
ois = new ObjectInputStream( Client.getInputStream() );
   
try
{
     // 입력
     // 입력 받은 값을 캐스팅한다.
     dr = (DataRecord) ois.readObject();
} catch (ClassNotFoundException e)
{
     // 입력 오류시
     e.printStackTrace();
}

System.out.println( dr.getString() );
System.out.println( dr.getInt() );



클라이언트 측

// 필요한 헤더파일
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

// 객체 선언 및 초기화
private Socket Client = null;
private ObjectInputStream ois;
private ObjectOutputStream oos;
 
oos = new ObjectOutputStream( Server.getOutputStream() );
oos.flush();
ois = new ObjectInputStream( Server.getInputStream() );


dr = new data;
dr.szStr = "Socket 전송 테스트";
dr.n = 1234;

try
{
     oos.writeObject( dr );
     oos.flush();
} catch( Exception e )
{
     e.printStackTrace();
}