시소당
객체 직렬화
객체 직렬화의 이점:
데이터 영속성 확보
(데이터 영속성: 자료를 저장한 이후 재사용 시 프로그램 동작시와 똑같은 구조를 가짐)
데이터 전송시 용이성 제공
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();
}
출처 : http://2-up.tistory.com/168