2013-03-22 8 views
2

DataInputStream을 사용하여 A에서 B까지 여러 문자열을 보내려고합니다.DataInputStream 및 DataOutputStream 사용

나는 이것을 .write()을 사용하여 전송하는 방법을 알고 있지만, 스트링을 분리하는 가장 좋은 방법은 확실하지 않습니다. 사실 연구 후 문자열에 문자를 추가하고 B로 나눠서 사용하지 않으면 가능한 것처럼 보이지 않습니다.

DataInputStream을 사용하는 모든 대안이 고려됩니다. Array을 작성하여 전송하는 방법에 대해 잘 모르기는했지만 말입니다.

지금까지 내가 가진 :

public String getDetails() {  
System.out.print("Name: "); 
String uiname = scan.next(); 
pout.write(uiname); 

System.out.print("Address: "); 
String uiaddress = scan.next(); 

pout.write(uiaddress); 

return ""; 

}

+0

무엇이'A' &'B'입니까? – SudoRahul

+0

클라이언트와 서버 –

+0

'DataInput-/OutputStream'을 사용할 때의 문제점은 무엇입니까? 사용중인 경우 바이너리 데이터를 보냅니다. 문자열을 하나의 객체로 분리 할 필요가 없습니다. – Zhedar

답변

2

만큼 당신의 문자열이 < 65536 자이기 때문에, 당신은 DataOutputStream.writeUtf()DataInputStream.readUTF() 사용할 수 있습니다. 문자열과 프리미티브보다 복잡한 것이 필요한 경우 ObjectOutputStreamObjectInputStream을 사용해야합니다.

예 (구문 오류를 포함 할 수있는)

DataOutputStream out = new DataOutputStream(...); 
out.writeUtf("foo"); 
out.writeUtf("bar"); 
out.close(); 

DataInputStream in = new DataInputStream(...); 
String s1 = in.readUtf(); 
String s2 = in.readUtf(); 
// that's all, folks! 

writeUtf() 방법은 문자 수와 문자열을 진행할 때. readUtf() 메서드는 먼저 문자 개수를 가져온 다음 정확히 많은 문자를 읽습니다. 문자열을 쓰거나 읽는 동안 스트림이 알아낼 수 있습니다.

1

두 아이디어 :

  • DataOutputStream.writeUTF 사용 및 DataInputStream.readUTF

  • JSON (또는 XML)와 같은 "홀더"형식을 사용하고 "인쇄"는 다음 다른에서 디코딩 JSON 배열을 구축 많은 라이브러리를 사용하여 끝내십시오. (json.org의 JSON 라이브러리로 충분합니다)

+0

왜 객체 스트림? DataInput/OutputStream에는 그러한 메소드가 있습니다. – EJP

+0

참. 나는 객체 인스턴스 작성을 생각하고 부모 클래스에서 사용할 수 있다는 것을 깨닫지 못했습니다. –

+0

답변이 수정되었습니다. –