간단한 채팅서버 구현
간단한 채팅서버 구현
서버는 통신의 종단점을 설정하고 클라이언트가 접속하기를 기다리는 일을 합니다.
서버를 구성하는데는 6단계가 필요합니다.
- 소켓생성 : socket()함수를 이용해 TCP socket을 생성한다
- 바인딩 : bind()함수를 이용해 소켓에 포트번호를 부여한다.
- 접속대기 : listen()함수를 이용해 클라이언트의 접속을 기다린다.
- 접속수락 : 클라이언트로부터 접속이 되면 accept()함수를 호출해 클라이언트 연결에 대한 새로운 소켓을 생성한다.
- 데이터 송/수신 : send()함수와 recv()함수를 이용해 서버 소켓과 새로만든 클라이언트 소켓을 이용해 데이터를 주고 받는다.
- 접속종료 : close()함수를 이용해 연결을 닫는다.
서버는 주소를 소켓에 결합(binding)하고 그 소켓을
클라이언트들과 연결된 다른 소켓들로부터 받는 채널로 사용합니다.
클라이언트를 구성하는데는 4단계가 필요합니다.
- 소켓생성
- 접속시도
- 데이터 송수신
- 접속종료
이제 채팅서버를 만들어보겠습니다.
socketserver를 import하고 채팅서버를 만들기위한 외장 함수들을 사용하겠습니다.
클라이언트 입니다
여기서 쓰레드가 쓰였는데, 프로세스 내에서 실행되는 흐름의 단위를 말합니다.
쉽게말하면 할 일을 쪼개서 동시에 수행하도록 하는 것인데, 예시코드를 보여드리겠습니다.
이와같이 채팅프로그램에서 쓰레드가 쓰이는 이유는 서버와 클라이언트간의 교차적 통신을 위함입니다.
만약 쓰레드가 없다면 서버와 클라이언트의 각자 while문안에서 계속돌기만하겠죠?
이제 실행화면을 보여드리겠습니다.
터미널을 여러개 열어서 실행합니다.
오늘은 간단한 채팅프로그램을 구현해 보았는데요, 소켓과 여러 함수들의 자세한 내용은 다음에 다루도록 하겠습니다.
감사합니다.
Comments