Head vs breakz
[Code] - Python Socket 본문
Python Socket 프로그래밍
- server
import socket
#AF_INET = 주소체계 ,SOCK_STREAM = TCP 설정
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#localhost에는 ip주소값 , 12345는 클라이언트 접속을 대기한느 포트
server_socket.bind(('localhost', 12345))
server_socket.listen(0)
#대기상태 후 clinet가 반응 있으면 실행
client_socket, addr = server_socket.accept()
data = client_socket.recv(65535)
#받은 데이터를 출력
print(data.decode())
client_socket.send(data)
- client
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 12345))
sock.send('hello'.encode())
data = sock.recv(65535)
print(data.decode())
- server - 실습
#simple http server
import socket
from datetime import datetime
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 80))
server_socket.listen(0)
print("listening")
if True:
client_socket, addr = server_socket.accept()
print("accepting")
data = client_socket.recv(65535)
data = data.decode()
header=data.split('\r\n')
filename=header[0].split(" ")[1]
file=open("."+filename,'rt', encoding='utf-8')
html=file.read()
header='HTTP/1.0 200 Ok\r\n\r\n'
client_socket.send(header.encode("utf-8"))
client_socket.send(html.encode("utf-8"))
client_socket.close()
- server - 실습추가
import socket
import threading
from datetime import datetime
import subprocess
def httpprocess(client_socket) :
data = client_socket.recv(65535)
data = data.decode()
print(data)
try :
headers = data.split("\r\n")
filename = headers[0].split(" ")[1]
if '.py' in filename:
header = 'HTTP/1.0 200 OK\r\n\r\n'
html = subprocess.check_output(['python.exe', '.' + filename])
html = html.decode('cp949')
client_socket.send(header.encode("utf-8"))
client_socket.send(html.encode("utf-8"))
elif '.html' in filename:
file = open("."+ filename, 'rt', encoding='utf-8')
html = file.read()
header = 'HTTP/1.0 200 OK\r\n\r\n'
client_socket.send(header.encode("utf-8"))
client_socket.send(html.encode("utf-8"))
elif '.jpg' in filename or '.ico' in filename:
client_socket.send('HTTP/1.1 200 OK\r\n'.encode())
client_socket.send("Content-Type: image/jpg\r\n".encode())
client_socket.send("Accept-Ranges: bytes\r\n\r\n".encode())
file = open("." + filename, "rb")
client_socket.send(file.read())
file.close()
else :
header = 'HTTP/1.0 404 File Not Found\r\n\r\n'
client_socket.send(header.encode("utf-8"))
except Exception as e :
print(e)
client_socket.close()
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 80))
server_socket.listen(0)
print("listening")
while True :
client_socket, addr = server_socket.accept()
client_socket.settimeout(3)
print("accepting")
t = threading.Thread(target=httpprocess, args=(client_socket,))
t.start()
'Head > Code' 카테고리의 다른 글
[code] - 백준 실습1 10039,5543,10817,2523,2446,10996, python (0) | 2020.03.19 |
---|---|
[code] - 백준 while문 10952,10951,1110 python (0) | 2020.03.18 |
[code] - 백준 for문 2739,10950,8393,15552,2741,2742,11021,11022,2438,2439,10871 python (0) | 2020.03.16 |
[code] - 백준 if문 1330,9498,2753,2884,14681번 python (0) | 2020.03.16 |
[Code] - yolo detection (0) | 2020.03.03 |
Comments