socket을 이용한 클라이언트/서버 질문입니다
글쓴이: jaeaha / 작성시간: 일, 2014/11/16 - 12:16오전
책에있는 예제를 그대로해서 클라이언트와 서버 둘다 만들었는데 서버쪽에서 자꾸 이런 오류가 뜹니다
Address already in use: JVM_Bind
Exception in thread "main" java.lang.NullPointerException
at sc.ServerEx.main(ServerEx.java:31)
저 31번쨰줄은 socket.close(); 이부분을 가르키는거구요 ㅜㅜ
검색해보니 값이 생성되지 않았는데 이용하려고해서 그렇다고하는데 뭘 수정해야하는걸까요?
import java.io.*; import java.net.*; public class ServerEx { public static void main(String[] args) { BufferedReader in = null; BufferedReader stin = null; BufferedWriter out = null; ServerSocket listener = null; Socket socket = null; try { listener = new ServerSocket(9999); // 서버 소켓 생성 socket = listener.accept(); // 클라이언트로부터 연결 요청 대기 System.out.println("연결됨"); in = new BufferedReader(new InputStreamReader(socket. getInputStream())); // 클라이언트로부터의 입력 스트림 stin = new BufferedReader(new InputStreamReader(System.in)); // 키보드 로부터의 입력 스트림 out = new BufferedWriter(new OutputStreamWriter(socket. getOutputStream())); // 클라이언트로의 출력 스트림 String inputMessage; while (true) { inputMessage = in.readLine(); // 클라이언트에서 한 행의 문자열 읽음 if (inputMessage.equalsIgnoreCase("bye")) // 클라이언트가 "bye"를보 내면 연결 종료 break; System.out.println(inputMessage); // 클라이언트가보낸메시지화면에출력 String outputMessage = stin.readLine(); // 키보드에서한행의문자열읽음 out.write("서버>" + outputMessage+"\n"); // 키보드에서 읽은 문자열 전송 out.flush(); } } catch (IOException e) { System.out.println(e.getMessage()); } finally { try { socket.close(); // 클라이언트와 통신용 소켓 닫기 listener.close(); // 서버 소켓 닫기 } catch (IOException e) { System.out.println("클라이언트와 채팅 중 오류가 발생했습니다."); } } } }
Forums:
Address already in use: JVM_Bind
9999 포트 서버 소켓이 이미 생성되었는지 확인해보세요.
netstat -an 으로 확인해 보시면 될겁니다.
아니면 9999 포트를 다른 값으로 변경해보세요.
댓글 달기