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 포트를 다른 값으로 변경해보세요.
댓글 달기