머신러닝 & 딥러닝/자연어처리

대학교 AI 질의응답 챗봇 만들기 - 6. 소켓 모듈과 JSON

by seokii 2022. 7. 29.
728x90
반응형

0. 포스팅 목록 & GitHub

(깃허브 스타 버튼 눌러주시면 글 작성에 큰 도움이 됩니다!)

https://github.com/Seokii/Chatbot4Univ

 

GitHub - Seokii/Chatbot4Univ: 대학생을 위한 AI 질의응답 챗봇 만들기

대학생을 위한 AI 질의응답 챗봇 만들기. Contribute to Seokii/Chatbot4Univ development by creating an account on GitHub.

github.com

https://seokii.tistory.com/146

 

[Project] 대학생을 위한 AI 질의응답 챗봇 만들기

1. GitHub https://github.com/Seokii/Chatbot4Univ GitHub - Seokii/Chatbot4Univ: 대학교 재학생을 위한 AI 질의응답 챗봇 대학교 재학생을 위한 AI 질의응답 챗봇. Contribute to Seokii/Chatbot4Univ development by creating an account o

seokii.tistory.com

 

1. 챗봇 엔진 서버

개발 목표로 하는 챗봇 엔진은 챗봇 서버를 만들어 다양한 플랫폼에서 이용 가능하게 하도록 하는 것입니다.

아래 그림처럼 여러 명의 이용자가 챗봇 엔진에 접속해 질문에 대한 답변을 할 수 있도록 구현해야 합니다.

다수의 챗봇 클라이언트에 대해 요청을 처리해야 하기 때문에 멀티 스레딩 방식으로 구현하도록 하겠습니다.

앞으로 서버를 만들고 필요한 모든 개발을 마친 후 서버 환경에 세팅하는 과정까지 진행하고자 합니다.

 

2. JSON

챗봇 엔진에 요청하고 응답받을 때 JSON 형태를 통해 주고받도록 하겠습니다.

JSON을 사용하면 Key-Value의 쌍으로 이루어진 데이터 객체를 전달하기 용이합니다. 

아래의 그림과 같이 요청과 응답을 주고 받는 구조로 구현하도록 하겠습니다.

 

3. TCP 소켓 모듈

# /utils/BotServer.py

import socket

class BotServer:
    def __init__(self, srv_port, listen_num):
        self.port = srv_port
        self.listen = listen_num
        self.mySock = None

    # sock 생성
    def create_sock(self):
        self.mySock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 소켓 닫아도 바로 사용가능하게 설정
        self.mySock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.mySock.bind(("0.0.0.0", int(self.port)))
        self.mySock.listen(int(self.listen))
        return self.mySock

    # client 대기
    def ready_for_client(self):
        return self.mySock.accept()

    # sock 반환
    def get_sock(self):
        return self.mySock

- srv_port : 소켓 서버의 포트번호

- listen_num : 동시 접속 클라이언트 수

- create_sock : TCP/IP 소켓 생성 및 서버 포트로 지정한 서버 포트로 설정한 수 만큼 클라이언트 연결 수락

- ready_for_client : 챗봇 클라이언트 연결을 대기하다 연결을 수락

- get_sock : 현재 생성된 서버 소켓을 반환

 

 

728x90
반응형

댓글