Development(7985)
-
소켓 옵션 설정(클라이언트 측 소켓에 제공하는 옵션) - TCP_NODELAY, SO_LINGER, SO_TIMEOUT, SO_RCVBUF, SO_SNDBUF, SO_KEEPALIVE, SO_OOBINLINE, SO_REUSEADDR, IP_TOS
소켓 옵션 설정(클라이언트 측 소켓에 제공하는 옵션)소켓 옵션은 자바 소켓 클래스 내부의 네이티브 소켓이 데이터를 보내거나 받는 방법을 지정하는데 클라이언트 측 소켓에 대해 아래에 나열된 9가지 옵션을 제공하고 있습니다.옵션 이름은 소켓을 처음 개발한 버클리 유닉스의 C헤더 파일에 있는 이름을 그대로 빌려왔기 때문에 유닉스의 C명명규칙을 그대로 따르고 있습니다.· TCP_NODELAY· SO_LINGER· SO_TIMEOUT· SO_RCVBUF· SO_SNDBUF· SO_KEEPALIVE· SO_OOBINLINE· SO_REUSEADDR· IP_TOS TCP_NODELAYTCP_NODELAY 설정을 true로 하면 패킷의 크기에 상관없이 가능한 빨리 패킷 전송합니다. 이 옵션은 네이글 알고리즘(Nagle..
-
Serialization(직렬화) 조건 - Serialization 시 경고 메시지, serialVersionUID, serialVersionUID 명시적 지정, serialVersionUID 생성
Serialization(직렬화) 조건 serialVersionUID· Serialization 시 경고 메시지· serialVersionUID· serialVersionUID 명시적 지정· serialVersionUID 생성 Serialization(직렬화) 조건· 객체의 멤버들 중에 Serializable 인터페이스가 구현되지 않은 객체가 있으면, 직렬화 할 수 없습니다.(NonSerializableException)· 직렬화 해야 되는 객체 안의 객체 중 Serializable 인터페이스가 구현되지 않으면서 전송하지 않아도 되는 객체 앞에는 transient 를 선언해줍니다. 그러면 직렬화 대상에서 제외되므로 해당 객체는 직렬화가 가능합니다.· 객체를 직렬화는 Serializable인터페이스를 이용..
-
Serializable 인터페이스, transient
Serializable 인터페이스· 직렬화는 자바에서 java.io.Serializable 이라는 인터페이스로 구현되어 있습니다.· 파일의 입출력 대상이 되는 인스턴스는 이 인터페이스를 구현하거나, 이를 구현하는 클래스를 상속해야 합니다.· Serializable 인터페이스를 구현한 클래스를 생성하면 해당 클래스의 모든 멤버변수는 직렬화 대상이 됩니다. 즉, 자바에서는 Serializable 인터페이스를 구현한 클래스만 직렬화할 수 있도록 제한하고 있습니다.· 객체가 스트림을 통해 직렬화 될 때는 객체에 있는 멤버변수가 직렬화 됩니다.· 객체의 멤버변수 중에 직렬화 대상에서 제외하고 싶은 것은 transient 키워드를 사용하면 됩니다. //Serializable인터페이스가 구현된 클래스는 객체 직렬화 ..
-
ObjectOutputStream (인스턴스 저장), 파일에 객체를 저장(직렬화)하는 경우
ObjectOutputStream (인스턴스 저장) · ObjectOutput 인터페이스를 구현한 클래스로 객체를 파일에 기록 할수 있는 클래스입니다. · 바이트출력 스트림과 연결되어 객체를 직렬화합니다. · ObjectOutput 인터페이스는 writeObject(Object obj) 메서드를 포함하고 있는데 이 메서드가 객체의 데이터를 직렬화 시켜주는 메서드(직렬화 메서드)입니다. · 만약 obj가 Serializable 인터페이스로 구현되어 있지 않다면 NotSerializableException 예외가 발생합니다. · 직렬화된 데이터를 저장하는 파일 확장자는 serialization의 약자인 ".ser"로 설정하는것이 관례입니다. //object.ser파일에 저장하는 출력스트림(FileOutput..
-
Object Stream(오브젝트 스트림)
Object Stream(오브젝트 스트림)· 생성된 객체를 파일 또는 네트워크로 출력할 수 있으며 객체는 문자가 아니기 때문에 바이트 기반 스트림으로 출력해야 합니다.· 객체를 직렬화 하고 다시 역직렬화 시킬 수 있는 클래스는 ObjectInputStream과 ObjectOutputStream 클래스입니다.· ObjectInputStream과 ObjectOutputStream 클래스는 각각 InputStream과 OutputStream을 상속받지만 기반 스트림을 필요로 하는 보조 스트림입니다. 그래서 객체를 생성할 때 입출력(직렬화/역직렬화)할 스트림을 지정해 주어야 합니다. Object Stream 생성자연결할 바이트 입출력스트림을 생성자의 매개변수의 값으로 받아서 생성됩니다.
-
Ex21-자기 참조 구조체 예제
자기 참조 구조체 예제 메모리 구조 소스코드 #include struct student{ char name[20]; // 이름 int age; // 나이 struct student* left_link; // 자기 참조 구조체 포인터 변수 struct student* right_link; // 자기 참조 구조체 포인터 변수 }; int main(void){ struct student stu1 = {"Brenda", 20, NULL, NULL}; struct student stu2 = {"Gina", 30, NULL, NULL}; struct student stu3 = {"Zoe", 40, NULL, NULL}; stu1.left_link = &stu2; stu1.right_link= &stu3; print..