해결된 질문
작성
·
185
·
수정됨
1
안녕하세요, 영한님
뒤에 있을 채팅 프로그램을 직접 만들어보려다가 난관에 봉착해 질문드립니다.
ClientV6 코드 내의 while문을 Thread에 넣는 작업을 진행하였습니다.
아직 클라이언트에서 입력 값을 넣기 전임에도 불구하고 서버에서 EOFException이 나는데 그 이유를 모르겠습니다.
혹시 제가 코드를 잘못 짠 것인지
아님 놓치는 부분이 있는 것인지 한 번 봐주실 수 있나요?
public class ClientV6_1 {
private static final int PORT = 12345;
public static void main(String[] args) throws IOException {
log("클라이언트 시작");
try (
Socket socket = new Socket("localhost", PORT);
DataInputStream input = new DataInputStream(socket.getInputStream());
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
) {
log("소켓 연결: " + socket);
new Thread(new ClientHandler(socket), "ClientHandler").start();
} catch (IOException e) {
log(e);
}
}
}
public class ClientHandler implements Runnable {
private final Socket socket;
private final DataInputStream input;
private final DataOutputStream output;
public ClientHandler(Socket socket) throws IOException {
this.socket = socket;
this.input = new DataInputStream(socket.getInputStream());
this.output = new DataOutputStream(socket.getOutputStream());
}
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
try {
while (true) {
System.out.print("전송문자: ");
String toSend = scanner.nextLine();
// send
output.writeUTF(toSend);
log("client -> server: " + toSend);
if (toSend.equals("exit")) break;
// receive
String received = input.readUTF();
log("client <- server: " + received);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
close(socket);
}
}
}
아 그럴수가 있군요,
감사합니다 시도해보겠습니다!!!