본문 바로가기
Language/Java

자바 소켓 통신 서버 & 클라이언트 작성 및 연결해보기

by wakestand 2019. 12. 12.
반응형

자바로 소켓 통신 구현의 첫 번째 과제는 서버와 클라이언트를 연결하는 것인데

먼저 서버와 클라이언트를 작성해 서버와 클라이언트를 연결시켜 보자

 

먼저 위는 소켓 통신의 서버로 사용할 코드인데

Port 정보를 넣어서 ServerSocket을 만들어 주면

서버를 실행한 컴퓨터의 IP 주소와 Port를 가지고 서버를 구성하게 된다

 

이후 서버는 그냥 꺼지면 안되기 때문에

while(true) { } 를 넣어줘서 직접 정지시키는 것 외에는 계속 돌아가게 설정해 놓고

Socket 객체를 생성해 serverSocket으로 클라이언트가 접속하면

접속했다는 메세지를 system.out.println(소켓.getLocalAddress()) 로 확인하게 된다

 

동일하게 구현하려면 아래 코드를 가져가 붙여넣어주면 된다

public class MySocketServer {
	
	public static void main(String[] args) {
		try {
			int socketPort = 1234;
			ServerSocket serverSocket = new ServerSocket(socketPort); // 소켓 만들기
			System.out.println("socket : " + socketPort + "으로 서버가 열렸습니다");
			
                        // 소켓 서버가 종료될 때까지 반복
                        while(true) {
                        Socket socketUser = serverSocket.accept(); // 소켓 서버로 접속 시 socketUser에 접속자 정보 할당
                        System.out.println("Client가 접속함 : " + socketUser.getLocalAddress()); // 접속자의 getLocalAddress 가져오기
                        }			
            
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

다음으로는 클라이언트 소스인데

소켓에 서버의 IP 정보와 Port 값을 담아 소켓을 생성하면 바로 클라이언트와 서버 소켓과 연결된다

 

여기서 IP 정보는 윈도우 버튼 > 실행 > cmd 클릭 후 엔터 > ipconfig 입력 후 엔터

 

이후 이런 화면이 뜨는데 IPv4 주소 값을 적어주면 된다

 

해당 내용을 붙여넣을 시 클라이언트 코드는 아래와 같다

public class MySocketClient {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("121.999.999.99", 1234); // 소켓 서버에 접속 
			System.out.println("socket 서버에 접속 성공!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

서버를 실행한 뒤 클라이언트를 실행해 보면

클라이언트가 바로 연결되어 Client가 접속함 : ip값 ~ 이 뜨는 것이 보인다

 

여기서 두 소스를 동시에 실행시켰을 경우에는 콘솔 라인을 어떻게 따로 확인하나 싶을텐데

우측 하단에 Display Selected Console 버튼을 눌러 보여진느 콘솔을 변경할 수 있다

 

다음 글에서는 소켓 통신을 이용해 서버와 클라이언트 간 메세지를 주고 받는 방법에 대해 알아보자

반응형

댓글