2014-10-10 3 views
1

클라이언트 측 :자바의 DataInputStream

 out = new DataOutputStream(connection.getOutputStream()); 
     String process; 
     System.out.println("Connecting to server on "+ host + " port " + port +" at " + timestamp); 
     process = "Connection: "+host + ","+port+","+timestamp; 
     System.out.println("client len " + process.length()); 
     out.write(process.length()); 

인쇄 : 렌 클라이언트 (55)

서버 측 :

 in = new DataInputStream(connection.getInputStream()); 
     while (true) { 
      int len = in.readInt(); 
      System.out.println("Length of pkt: "+len); 

인쇄 : 927166318

여기 무슨 일이야 : PKT의 길이 ? 나는 0을 쓰려고 노력했고 서버 측에 3621743을 인쇄했다. 일부 다른 사이트를 확인한 결과 일부 사용자는 다른 스트림에 문제가있었습니다. 나는 작은 엔디안 대 큰 문제로 인해 발생하는 문제에 대해 읽었지 만 서로 잘 작동해야하는 데이터 스트림을 사용하고 있기 때문에 문제가 무엇인지 확실하지 않습니다.

답변

3

readInt()을 한 쪽에서 호출하는 경우 다른 쪽에서 writeInt(int)으로 전화해야합니다.

는 기본 출력 스트림에 지정된 바이트 (인수 B의 하위 8 비트)에 기입, write(int)위한 Javadoc에서이

out.write(process.length()); 

out.writeInt(process.length()); 

로 변경.

+0

Perfect. 나는 그것이 기본 무언가라는 것을 알았다. 도와 주셔서 감사합니다! – Rahul

1

나중에 스트림에서 정수를 읽었으므로 out.write(...); 대신 out.writeInt(process.length());을 사용하십시오.

관련 문제