TCP 소스에서 데이터를 읽는 Java 프로그램은 데이터 소스의 클라이언트 역할을하는 내 프로그램이 더 빠를 때를 제외하고 모두 정상적으로 작동합니다 소스는 BufferedReader.ready()가 응답해야하므로 TCP 연결을 닫는 예외를 throw합니다. BufferedReader가 새로운 입력을 기다리는 것을 유지할 수있는 선호하는 방법/방법이 있습니까? 소스가 가끔씩 지연 될 수 있습니다.버퍼 된 소켓 판독기가 원격 연결에서 데이터를 기다리지 않습니다.
public aDataServer(String host, int port, StreamConnection aConnection) throws UnknownHostException, IOException {
this.aConnection = aConnection;
ndataServerSocket = new Socket(Inet4Address.getByName(host),port);
ndataServerReader = new BufferedReader(new InputStreamReader(ndataServerSocket.getInputStream()));
}
public void run() {
try {
RemoteDevice dev = RemoteDevice.getRemoteDevice(aConnection);
OutputStream outputStream = aConnection.openOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(outputStream);
do {
try {
String ndata = ndataServerReader.readLine();
osw.write(ndata+"\n");
osw.flush();
LOG.log(Level.INFO,"Sent");
} catch(IOException io) {
LOG.log(Level.SEVERE, "Client device({0}) disconnected: \n{1}", new Object[]{dev.getFriendlyName(true), io.getMessage()});
break;
}
}while(ndataServerReader.ready());
} catch (IOException ioe) {
LOG.severe(ioe.getMessage());
} finally {
try {
if (ndataServerSocket != null) {
ndataServerSocket.close();
}
if (ndataServerReader
!= null) {
ndataServerReader.close();
}
} catch (IOException ex) {
LOG.log(Level.SEVERE, ex.getMessage());
}
}
예외가 발생합니다. BufferedReader를 작성하고 읽는 방법에 대한 코드 스 니펫을 포함 할 수 있습니까? – dimo414
일부 코드로 내 질문이 업데이트되었습니다. – user1945235
예외 출력도 게시 할 수 있습니까? – dimo414