socket 통신 입력 흐름 출력 흐름 막힘 해결 방안

1110 단어 socket
[size=medium] 서버측 읽기 흐름 부분 코드:
System.out.println(new BufferedReader(new InputStreamReader(socket.getInputStream())).readLine());

클라이언트 쓰기 스트림 부분 코드
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));            
writer.write(content);
writer.flush();

프로그램 실행 중 장애 발생
원인 분석:
서버측에서readLine()을 사용했습니다.즉, 한 줄의 텍스트를 읽을 때 문제가 생기지 않고,
그러나 Socket을 사용할 때 클라이언트가 데이터를 썼지만 줄 바꾸기를 제공하지 않았기 때문에 서버 측이readLine()에서 계속 막힌 상태입니다.
해결 방법:
1:
클라이언트가 데이터를 다 쓴 후에 줄 바꾸기를 추가할 수 있습니다. newLine () 방법은 다음과 같습니다.
  
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));            
   writer.write(content);
   writer.newLine();   
   writer.flush();

이렇게 하면 서버 측에 막힘이 생기지 않을 것이다.
2:
DataOutputStream 및 DataInputStream 사용
서버측:
 
input.readUTF();

클라이언트
 
output.writeUTF();
[/size]

좋은 웹페이지 즐겨찾기