SERVER
1. ๋จผ์ ํต์ ํ ์์ผ์ ๊ตฌ์กฐ๋ฅผ ์์ฑํฉ๋๋ค.
class SocketInfo() :
HOST=''
#HOST์ ์๋ฌด๊ฒ๋ ์ง์ ํ์ง ์์ผ๋ฉด ๊ฐ๋ฅํ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๋ค.
PORT=1024
#๋ ๋๋ฐ์ด์ค๊ฐ ๋ง๋ ์ง์ ์ ์ ํด์ค๋ค๊ณ ์๊ฐํ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค.
#ํฌํธ๋ฒํธ๋ ์๋ฌด๊ฑฐ๋ ํด๋ ์๊ด์์ผ๋ ์ด๋ฏธ ์ ํด์ ธ ์๋ ํฌํธ๋ฒํธ๋ ์ฌ์ฉํ๋ฉด ์๋๋ค.
# HTTP, FTP ๋ฑ์ ์ง์ ํฌํธ๋ฒํธ ์ฌ์ฉ ๋ถ๊ฐ
BUFSIZE=1024
#์์ผ์ด ํ๋ฒ์ ๋ฐ์์ฌ ์ ์๋ ์ฉ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๊ฒ ๋ค.
#์ต๋ 1024 byte๊น์ง๋ง ์ ๋ฌ ๋ฐ๊ฒ ๋ค.
ADDR=(HOST, PORT)
#ํ์ server์์ bind ํจ์๋ฅผ ์ฌ์ฉํ ๋ bind ํจ์์ ์ธ์ ๊ฐ์ด ( IP, PORT ) ์ด๊ธฐ ๋๋ฌธ์
#๊ทธ๋ฅ ํ๋๋ก ํฉ์ณ์ค ๊ฒ์ด๋ค.
ํ์ผ๋ก ๋ฐ๋ก ๋ถ๋ฆฌํ์ง ์์ผ์๊ณ ํ ํ์ผ์ ๊ฐ์ด ๋ฃ์ผ์ ๋ ๋ฉ๋๋ค.
์ ๋ ๋ฐ๋ก ๋๋๋๊ฒ ๋ณด๊ธฐ ํธํด์ ๋ถ๋ฆฌํ์ด์.
2. Server์ ์์ผ์ ์์ฑํฉ๋๋ค.
# -*- coding:utf-8 -*-
#ํ๊ธ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ ์ ์์์ผ๋ก ์ธ์ฝ๋ฉ์ ์์ผ์ฃผ๋ ๋ช
๋ น์ด๋ค.
#ํ๊ธ์ฃผ์์ ๋ค๋๋ฐ๋ ์์ผ๋ฉด ์๋ฌ๊ฐ ๋๋ค.
from socket import *
#์์ผ์ ์ฌ์ฉํ๊ธฐ ์ํ์ฌ ์์ผ ๋ชจ๋์ importํ๋ค.
from data_file import *
#์์ผ์ ๊ตฌ์กฐ์ ๋ณด๋ฅผ ๋ด์๋์ ํ์ผ์ importํ๋ค.
ssock=socket(AF_INET, SOCK_STREAM)
ssock.bind(SocketInfo.ADDR)
ssock.listen(5)
#์๋ฒ ์์ผ์ด ํด๋ผ์ด์ธํธ์ ์ ์์ ๊ธฐ๋ค๋ฆฐ๋ค. (listen socket ์ํ)
csock=None
while True :
if csock is None :
#์ฐ๊ฒฐ๋ client ์์ผ์ด ์์ผ๋ฉด ์คํํ๋ค.
print "waiting for connection..."
csock, addr_info = ssock.accept()
#client์์ ์ฐ๊ฒฐ์ ์๋ํ๋ฉด ssock.accpet() ์คํ ํ ๋ฐํ ๋๋ ๊ฐ์ ๊ฐ๊ฐ csock, addr_info์ ์ ์ฅํ๋ค.
print "got connection from", addr_info
else:
#์ฐ๊ฒฐ๋ client ์์ผ์ด ์์ผ๋ฉด ์คํํ๋ค.
print "waiting for response..."
commend=csock.recv(SocketInfo.BUFSIZE)
#client์์ ์๋ต์ ๋๋ ค์ฃผ๋ฉด BUFSIZE๋งํผ ๋ฐ์๋๋ ค commend์ ์ ์ฅํ๋ค.
print "accept >> "+commend
if commend=="hi" :
csock.send("Hello")
elif commend=="exit" :
csock.send("bye")
csock.close()
#์ฐ๊ฒฐ๋์ด ์๋ client csock์ ๋ซ๋๋ค. ( server์ client์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ค. )
print "close csock"
else:
csock.send("bye")
csock.close()
#์ฐ๊ฒฐ๋์ด ์๋ client csock์ ๋ซ๋๋ค. ( server์ client์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ค. )
print "close csock"
CLIENT
Client ์์ผ์ ์์ฑํฉ๋๋ค.
# -*- coding:utf-8 -*-
from socket import *
from sys import exit
#ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํ๋ exit()ํจ์์ ์ฌ์ฉ์ ์ํด sys ๋ชจ๋์ exit๋ฅผ importํ๋ค.
from data_file import SocketInfo
#์์ผ์ ๊ตฌ์กฐ์ ๋ณด๋ฅผ ๋ด์๋์ ํ์ผ์ importํ๋ค.
class SocketInfo(SocketInfo) :
HOST='127.0.0.1'
csock=socket(AF_INET, SOCK_STREAM)
#IPv4, TCP ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์์ผ์ ์์ฑํ๋ค.
csock.connect(SocketInfo.ADDR)
#ADDR์ ํด๋นํ๋ IP์ PORT๋ฅผ ๊ฐ์ง ์์ผ์ ์ฐ๊ฒฐ์ ์๋ํ๋ค. ( server์ client๊ฐ ์ฐ๊ฒฐ๋์๋ค. )
while True:
try:
#์์ธ์ฒ๋ฆฌ, ์๋ฌ๊ฐ ๋์ง ์์ ๊ฒฝ์ฐ ์คํํ๋ค.
commend=raw_input(" >> ")
#commend ๋ณ์์ ๋ฌธ์์ด์ ์
๋ ฅ๋ฐ์ ์ ์ฅํ๋ค.
csock.send(commend)
#csock์ ์ด์ฉํ์ฌ commend๋ฌธ์์ด์ ์ ์กํ๋ค.
print "waiting for response..."
commend=csock.recv(SocketInfo.BUFSIZE)
#commend์ csock์ ์ด์ฉํ์ฌ server๋ก ๋๋ ค๋ฐ์ ์๋ต์ BUFSIZE ๋งํผ ๋ฐ์์ ์ ์ฅํ๋ค.
print commend
except Exception as e :
#์์ธ์ฒ๋ฆฌ, ์๋ฌ๊ฐ ๋ ๊ฒฝ์ฐ ์คํํ๋ค.
print "%s:%s" %(e, SocketInfo.ADDR)
csock.close()
#์ฐ๊ฒฐ๋์ด ์๋ client csock์ ๋ซ๋๋ค. ( server์ client์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ค. )
exit()
#ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๋ค.
print "connect is success"
Let's Do it
Server์ Client๋ฅผ ์คํํ๊ณ , Client์ hi๋ฅผ ์ ๋ ฅํด๋ด ๋๋ค.
'Lang > ๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Python * MySQLdb ๋ชจ๋ ์ค์น (0) | 2020.03.09 |
---|---|
๐ Python * Linux(Ubuntu) ํ๊ฒฝ๋ณ์ ์ฝ๋๋ก ๊ฐ์ ธ์ค๊ธฐ (0) | 2020.03.09 |
๐ Python * MQTT module paho๋ฅผ ์ด์ฉํ MQTT ํต์ (0) | 2020.03.09 |
๐ Python * ๋ฌธ์ โ ์์คํค์ฝ๋ ๋ณํํ๊ธฐ (0) | 2020.03.09 |
๐ Python * ์/ํ์, ๋์ผ ํด๋ ๋ด ๋ชจ๋ from, import ํ๋ ๋ฐฉ๋ฒ (0) | 2020.03.09 |