CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): heloise (오후의햇살)
날 짜 (Date): 2003년 9월 28일 일요일 오후 01시 56분 46초
제 목(Title): Java ObjectInputStream...


자바에 관한 질문입니다.
그냥 이 보드가 답이 가장 빠를 것 같아서 여기에 질문을 올리기로 했는데,
혹시 보드를 옮기기를 원하신다면, 그렇게 하도록 하겠습니다.

소켓을 통해, 데이타를 주고받을 때, ObjectInputStream, ObjectOutputStream
을 사용하고 싶은데, (어떻게 쓰는 건지 잘 몰라서) 잘 작동되지 않습니다.

아주 간단한 테스트케이스를 만들어봤는데,
아래 코드의 Server에서 "how are you" 라는 메시지를 보내도,
Client에서 받지 못하는 것 같습니다.

이 코드를, ObjectInputStream, ObjectOutputStream 대신
InputStream, OutputStream을 써서 작동시키면, 잘 작동이 되는데,
뭐가 잘못된 것일까요?
  
미리 감사드립니다.
    
============================= 작동하지 않는 예 ==================
=========== Server.java ==========================
import java.net.*;
import java.io.*;
 
class Server {

public static void main(String args[]) throws Exception {

  int serverport = Integer.parseInt(args[0]);

  ServerSocket Listen = new ServerSocket(serverport);

  Socket s = Listen.accept();

  OutputStream out = s.getOutputStream();
  ObjectOutputStream Out = new ObjectOutputStream(out);

  for (int i=0; i<5; i++) {
    String greeting = new String("how are you\n");
    Out.writeObject(greeting);
    System.out.println("sending : "+greeting);
  }
}

}
===============================================

===================== Client.java =============
import java.net.*;
import java.io.*;

class Client { 

public static void main(String args[]) throws Exception {
  String routerhost = args[0];
  int routerport = Integer.parseInt(args[1]);
  
  System.out.println("connecting to " + routerhost +
    " for port number " + routerport);
    
  Socket s = new Socket(routerhost, routerport);
  InputStream in = s.getInputStream();
  ObjectInputStream In = new ObjectInputStream(in);
 
  String str;
  while(true) {
    if (In.available() != 0) {
      str = (String) In.readObject();
      System.out.println(str);
    }
  }

}

}
==================================================

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.