2012-08-27 4 views
1

Apache MiA에서 IoBuffers를 사용하여 Java의 버퍼에서 String을 올바르게 구분하는 방법에 대해 궁금합니다. 내가 문자열에 다른 후 하나의 문자열을 놓겠 때문에, 서버가 버퍼를 수신 한 문자열로 처리됩니다버퍼의 문자열을 올바르게 구분합니다.

IoBuffer buffer = IoBuffer.allocate(100); 
buffer.putString("username"); 
buffer.putString("password"); 
buffer.flip(); 
session.write(buffer); 

클라이언트 측 : 여기에 몇 가지 예제 코드입니다.

서버 측

IoBuffer buffer = (IoBuffer) message; 
String username = buffer.getString(Charset.forName("UTF-8").newDecoder()); 
String password = buffer.getString(Charset.forName("UTF-8").newDecoder()); 
프로그램을 함께 넣어 두 문자열을 하나의 문자열로 계산 있기 때문에 (전체 전체 문자열을 가지고 생각하기 때문에, 두 번째에는 getString()에 대한 예외의 어떤 종류를 던질 것이다

).

어떻게이 두 문자열을 올바르게 구분해야합니까?

: 확실한 방법은 같은 것을 할 것입니다 "사용자 이름 : 암호"

및 서버 측에서 :

String[] args = buffer.getString(Charset.forName("UTF-8").newDecoder()).split(":", 2); 
String username = args[0]; 
String password = args[1]; 

이 가장 좋은 방법은이 작업을 수행인가요? 아니면이 두 문자열을 구분하는 더 적절한 방법이 있습니까?

대단히 감사합니다!

답변

0

내가 가장 좋은 방법은 구분 문자를 사용하는 것이지만 아마도 :이 아니므로 검색 경로 등에 사용되는 것 같습니다. 세미콜론 ;은 잘 보이지 않더라도 더 나은 구분 기호 일 수 있습니다.

나는 적어도 내 응용 프로그램에서 사용하는 접근 방식.

1

당신은 여러 가지 방법이있다 : 일반적으로 '\n 것은'언젠가

또한 아닌 LANG의 특정 문자를 사용할 수 있습니다 CSV

처럼, ' \t'[내의 readLine() 또는 꽵()에] 최고 사용

할 수도, 비 인쇄 BELL char delim = '7';

' µ' § ''싫어 ' ¨'ASCII에 악센트, 또는 상징처럼
관련 문제