개념
소켓(Socket) 통신 정리
ris
2024. 11. 19. 10:06
소켓(Socket)이란
소켓이란 통신을 위한 접점이라고 할 수 있습니다. 보통 클라이언트와 서버 간의 통신에 자주 사용됩니다.
더 쉽게 얘기하자면 컴퓨터들간의 통신 수단이라고 할 수 있습니다.
이해를 돕기 위해 간단히 축약한 통신 과정을 보여드리겠습니다.
위 사진을 순차적으로 표시하면 다음과 같습니다.
위 사진은 Socket 통신과는 다르지만
- Server와 Client의 양방향 통신이다.
- 실시간으로 데이터를 주고 받는다.
마지막으로 코드를 통해 설명해보겠습니다.
import socket
svr_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
svr_sock.bind(("", 12000))
svr_sock.listen()
c_sock, addr = svr_sock.accept()
recv_data = c_sock.recv(1024)
print(recv_data.decode('utf-8'))
c_sock.close()
svr_sock.close()
서버 Server
- socket()으로 소켓 생성
- bind()를 통해 클라이언트와 소통할 ip와 port를 설정합니다.
- listen()을 통해 통신할 수 있는 상태로 설정합니다.
- 클라이언트의 통신 요청을 accept()로 받습니다.
- recv_data를 통해 데이터를 받습니다.
- close()를 사용해 소켓 종료
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 12000))
sock.sendall(input().encode('utf-8'))
sock.close()
클라이언트 Client
- socket()으로 소켓 생성
- connect()를 통해 서버와 연결 요청
- sendall()을 통해 데이터 송신
- close()를 사용해 소켓 종료