728x90
반응형
SMALL
네트워크 프로그래밍
두 컴퓨터간의 데이터를 주고 받을 수 있도록 프로그래밍을 하는 것을 네트워크 프로그래밍이라 한다. 인터넷 망을 통한 디바이스와 컴퓨터간의 데이터를 주고 받는 것도 역시 네트워크 프로그래밍이라 한다. 두 컴퓨터간에 데이터를 주고 받을려면 물리적 연결이 필요한데 이러한 연결을 도울수 있는 것을 소켓 (socket)이라 한다.
컴퓨터가 서로 연결이 되면 데이터를 주고 받을 수 있다. 여기서 Server는 연결을 대기하는 컴퓨터이며 Client는 연결을 시도하는 컴퓨터를 뜻 한다. Server는 여러 Client를 연결 받아서 관리 할 수도 있다. 모든 데이터 송수신 작업이 끝나면 소켓을 닫으면 두개의 컴퓨터 연결을 사라진다.
소켓 (socket)
# 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')
1. 우선 소켓을 설정하고, bind()함수를 통해 주소 정보를 할당한다. 2. 이후, listen()함수를 통해 연결 수신 대기 상태로 전환한다. 3. client가 연결할 시 accpet() 함수를 이용하여 연결을 수락한다. 4. 만약 client가 보낸 메시지가 있을 경우, recv(byte크기)를 이용하여 메시지를 가져온다. |
# 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')
1. 주소와 포트번호를 설정한다. 2. server에 접속하기 위한 client socket을 생성한다. 3. connect()함수를 이용하여 서버에 접속을 시도하고, send()함수를 이용해 메시지를 전달한다. |
1. 먼저 server.py를 실행하여, server가 client의 접속을 기다린다.
2. 이후, client.py를 실행하여 server에 접속을 시도한다.
3. server에서 client의 접속정보와 메시지를 확인
https://m.blog.naver.com/nonamed0000/221259426463
728x90
반응형
LIST
'Programming > Python' 카테고리의 다른 글
15. GUI툴킷 Tkinter (0) | 2021.12.15 |
---|---|
14. 데이터베이스 (Database) (0) | 2021.12.15 |
12. XML (Extensible Markup Language) (0) | 2021.12.15 |
11. 파일 입출력 (0) | 2021.12.15 |
10. 예외처리 (0) | 2021.12.15 |