소켓(socket)을 통해 서버(server)와 클라이언트(client)간 어떻게 기본적인 네트워크 통신이 이루어지는지 알아보려고 합니다.
먼저 통신을 위해 두개의 파일은 준비합니다. 파일은 각각 서버와 클라이언트에 해당합니다.
우선 server.py 작성
from socket import *
from select import *
HOST = ''
PORT = 10000
BUFSIZE = 1024
ADDR = (HOST, PORT)
# 소켓 생성
serverSocket = socket(AF_INET, SOCK_STREAM)
# 소켓 주소 정보 할당
serverSocket.bind(ADDR)
print('bind')
# 연결 수신 대기 상태
serverSocket.listen(100)
print('listen')
# 연결 수락
clientSocekt, addr_info = serverSocket.accept()
print('accept')
print('--client information--')
print(clientSocekt)
# 클라이언트로부터 메시지를 가져옴
data = clientSocekt.recv(65535)
print('recieve data : ',data.decode())
# 소켓 종료
clientSocekt.close()
serverSocket.close()
print('close')
이제 client.py를 작성
#! /usr/bin/python
# -*- coding: utf-8 -*-
from socket import *
from select import *
import sys
from time import ctime
HOST = '127.0.0.1'
PORT = 10000
BUFSIZE = 1024
ADDR = (HOST,PORT)
clientSocket = socket(AF_INET, SOCK_STREAM)# 서버에 접속하기 위한 소켓을 생성한다.
try:
clientSocket.connect(ADDR)# 서버에 접속을 시도한다.
clientSocket.send('Hello!'.encode()) # 서버에 메시지 전달
except Exception as e:
print('%s:%s'%ADDR)
sys.exit()
print('connect is success')
이제 위의 코드를 실행해보도록 하겠습니다.
server.py를 실행 후 client.py를 통해 server에 접속하는 과정입니다.