728x90
서버 측 소켓 생성(ServerSocket)
public class DemoServer {
public static void main(String[] args) throws IOException {
int port = 5050;
// 서버 소켓(리스너 역할 뿐) 생성
ServerSocket ssk = new ServerSocket(port); // 소켓과 연결할 포트 번호를 인자로 지님
System.out.println("접속 대기중");
Socket socket = ssk.accept(); // Client와 연결되면 새로운 소켓 생성(accept)
if (socket.isConnected()) {
}
}
}
클라이언트 측 소켓 생성
public class DemoClient {
public static void main(String[] args) throws IOException {
// 연결시 소켓 생성(연결되지 않을 경우 예외 발생)
Socket sk = new Socket("127.0.0.1", 5050); // Host 주소 + port 필요. 현재 자신의 PC 주소(루프백 주소) 사용
System.out.println("서버와 접속이 되었습니다.");
}
}
서버 클래스를 실행시킨(구동시킨) 후 클라이언트 클래스를 실행시키면 아래와 같은 메세지가 출력된다.
서버 측
클라이언트 측
만약, 하나의 클라이언트를 더 실행시키게 되면 Exception이 발생한다. 이는 여러 개의 Connection을 허용하는 코드가 아니기 때문이다.
여러 클라이언트의 접속을 고려하도록 서버 소켓의 코드를 수정할 수 있다.
public class DemoServer {
public static void main(String[] args) throws IOException {
int port = 5050;
ServerSocket ssk = new ServerSocket(port);
System.out.println("접속 대기중");
while (true) { // 계속해서 새로운 소켓 생성 가능
Socket socket = ssk.accept();
System.out.println("클라이언트가 접속했습니다.");
}
}
}
cf. 접속한 클라이언트의 IP 주소를 얻기 위해서는 서버 측에서 Socket이 생성될 때 socket.getInetAddress().getHostAddress() 메소드를 사용할 수 있다.
반응형
'Backend > Java' 카테고리의 다른 글
Java Networking) 채팅 서버 만들어보기 (0) | 2022.04.25 |
---|---|
Java Networking) Socket을 통한 데이터 전송 (0) | 2022.04.21 |
Java Networking) URL, URLConnection, openStream(), openConnection(), getInputStream() (0) | 2022.04.12 |
Java) CLI를 통한 Java 컴파일 시 발생하는 인코딩 오류 (0) | 2022.04.11 |
Java Networking) URL 클래스를 통한 URL정보 조회 (0) | 2022.04.11 |