Python 참 좋은거다
version python 3.6
기본 web server 띄우기
>python3 -m http.server 7890
위와같이 하고 브라우저에서 server:7890 으로 접속하면 실행한 폴더의 파일목록이 출력된다
해당 폴더에 index.html 파일이 있으면 기본 시작으로 띄워준다.
Socket 사용하기 초간단 샘플
참고 : https://gist.github.com/Integralist/3f004c3594bbf8431c15ed6db15809ae
dummyServer.py
import socket
import threading
bind_ip = '0.0.0.0'
bind_port = 9999
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip, bind_port))
server.listen(5)
print('Listening on {}:{}'.format(bind_ip, bind_port))
def handle_client_connection(client_socket):
request = client_socket.recv(1024)
print('Received {}'.format(request.decode('utf-8')))
client_socket.send(bytes('ACK!', 'utf-8'))
client_socket.close()
while True:
client_sock, address = server.accept()
print('Accepted connection from {}:{}'.format(address[0], address[1]))
client_handler = threading.Thread(
target=handle_client_connection,
args=(client_sock,)
)
client_handler.start()
dummyClient.py
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('0.0.0.0', 9999))
client.send(bytes('GET /index.html HTTP/1.1\r\nHost: hostname.co.kr', 'utf-8'))
response: bytes = client.recv(4096)
print(response.decode('utf-8'))
걍 python 3 설치된곳에서 위의 2개 파일로 실행 테스트 해보면 돌아간다..
ASync Socket 사용하기
asyncServer.py <== 입력받은 계산식을 eval 해서 반환하기
import asyncio
async def handle_client(reader, writer):
request = None
while request != 'quit':
request = (await reader.read(255)).decode('utf8')
print('Received {}'.format(request))
response = str(eval(request)) + '\n'
print('Send {}'.format(response))
writer.write(response.encode('utf8'))
loop = asyncio.get_event_loop()
loop.create_task(asyncio.start_server(handle_client, 'localhost', 15555))
loop.run_forever()
inputClient.py <== 사용자기 계산식을 입력하고 서버에 던져서 값 받아오기
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.connect(('localhost', 15555))
request = None
try:
while request != 'quit':
request = input('>> ')
if request:
server.send(request.encode('utf8'))
response = server.recv(255).decode('utf8')
print(response)
except KeyboardInterrupt:
server.close()
'Python' 카테고리의 다른 글
Flask url_for 트릭 (0) | 2023.11.29 |
---|---|
주가정보 가져오기 (0) | 2022.08.11 |