본문 바로가기
Programming/Python

13. 네트워크

by goatlab 2021. 12. 15.
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

 

#파이썬. 파이썬 소켓(socket) 프로그래밍

파이썬 소켓(socket) 프로그래밍네트워크 프로그래밍을 위하여 소켓(socket)을 통해 서버와 클라이언트간 ...

blog.naver.com

 

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