Web

[Socket] Socket 통신

moguogu 2021. 7. 28. 20:01

Socket with Python

Socket을 사용하게 된 이유

프로젝트를 진행하면서 컴퓨터 1대에는 감정인식, 다른 한대에는 답변 생성기로 부득이하게 나누어 진행했다.

기존에는 답변생성기에 웹 서버를 구현해서 만들었었는데, 감정인식을 하는 본래 우리 컴퓨터에 웹서버를 만들기 위해서 socket통신 방식을 선택했다.


python Socket 사용 법

server.py

import socket

host = "127.0.0.1" #서버 ip주소
port = 8080 # 서버 포트

soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #tcp방식으로 연결
soc.bind((host, port))
soc.listen(5) #5개 까지 연결 가능

while(True):
    conn, addr = soc.accept()
    print (addr) # 연결 주소 출력
    conn.send("server가 보낸다")
    conn.close()#연결 중지

cli.py

import socket

soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #tcp방식으로 

host = "127.0.0.1" # 서버 아이피
port = 8080 # 서버 포트

while(True):
    soc.connect( (host, port) ) # 서버측으로 연결
    print soc.recv(1024) # 서버측에서 보낸 데이터 1024 버퍼만큼 받기

    soc.send("Client. Hello!!!") # 서버측으로 문자열을 보내기
soc.close() # 연결 종료

server 와 client의 socket 통신 구조

image

  1. 웹 서버를 가지고 있는 client가 사용자의 발화를 입력 받은 뒤 server로 전달한다.
  2. 서버는 전달받은 발화로 답변을 생성하고 client에게 전송한다.
  3. client가 이를 받고 flask에 데이터를 전송한다.
  4. 웹화면에 채팅 형태로 발화가 출력된다.

Github 주소: https://github.com/dividiviDeep/chatbot/blob/master/cli.py

참고한 블로그 : https://blog.d0ngd0nge.xyz/python-socket-sokaes/

'Web' 카테고리의 다른 글

[Authorization] OAuth 2.0  (0) 2021.07.28
[Docker] Dockerfile 만들기  (0) 2021.07.28
[HTTP] METHOD  (0) 2021.07.28