소켓채팅프로그램 만들려고 하는데 자꾸 대기상태에요ㅠㅠ
화1이트
서버클래스에 가서 ctrl+f11[01:44:01]서버가 준비되었습니다.[01:44:01]연결요청을 기다립니다.클라이언트 클래스에 가서 ctrl+f11[01:44:05]/127.0.0.1로부터 연결요청이 들어왔습니다.[01:44:05]데이터를 전송했습니다.[01:44:05]연결요청을 기다립니다.
계속 연결요청만 기다리네요ㅠㅠㅠㅠ아무리 기다려도 연결되어서 에코프로그램이 안되구요ㅠㅠㅠㅠ 아래는 소스에요ㅠㅠㅠㅠ그냥 자바의 정석 p907, p909를 따라했는데 ㅠㅠㅠㅠ안되네요ㅠㅠ왜 안될까요ㅠㅠ?하나도 몰라서 ㅠㅠ고수님들 좀 도와주세요ㅠㅠTcpIpServer::
public class TcpIpServer { public static void main(String args[]) { ServerSocket serverSocket = null; try { // 서버소켓을 생성하여 7777번 포트와 결합(bind)시킨다. serverSocket = new ServerSocket(2011); System.out.println(getTime()+서버가 준비되었습니다.);
} catch(IOException e) { e.printStackTrace(); } while(true) { try { System.out.println(getTime()+연결요청을 기다립니다.); // 서버소켓은 클라이언트의 연결요청이 올 때까지 실행을 멈추고 계속 기다린다. // 클라이언트의 연결요청이 오면 클라이언트 소켓과 통신할 새로운 소켓을 생성한다. Socket socket = serverSocket.accept(); System.out.println(getTime()+ socket.getInetAddress() + 로부터 연결요청이 들어왔습니다.); // 소켓의 출력스트림을 얻는다. OutputStream out = socket.getOutputStream(); DataOutputStream dos = new DataOutputStream(out);
// 원격 소켓(remote socket)에 데이터를 보낸다. dos.writeUTF([Notice] Test Message1 from Server.); System.out.println(getTime()+데이터를 전송했습니다.);
// 스트림과 소켓을 닫아준다. dos.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } // while } // main
// 현재시간을 문자열로 반환하는 함수 static String getTime() { SimpleDateFormat f = new SimpleDateFormat([hh:mm:ss]); return f.format(new Date()); }} // class
TcpIpClient::
public class TcpIpClient { public static void main(String args[]) { try { String serverIp = 127.0.0.1;
System.out.println(서버에 연결중입니다. 서버IP : + serverIp); // 소켓을 생성하여 연결을 요청한다. Socket socket = new Socket(serverIp, 2011);
// 소켓의 입력스트림을 얻는다. InputStream in = socket.getInputStream(); DataInputStream dis = new DataInputStream(in);
// 소켓으로 부터 받은 데이터를 출력한다. System.out.println(서버로부터 받은 메세지 :+dis.readUTF()); System.out.println(연결을 종료합니다.);
// 스트림과 소켓을 닫는다. dis.close(); socket.close(); System.out.println(연결이 종료되었습니다.); } catch(ConnectException ce) { ce.printStackTrace(); } catch(IOException ie) { ie.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } // main} // class