728x90
반응형
Unix C Network API의 Select에 대응하는 기법이 파이썬에도 존재하고 있었음.
아래는 샘플 코드
import selectors
import socket
aSelectors = selectors.DefaultSelector()
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 5000))
server_socket.listen()
aSelectors.register(server_socket, selectors.EVENT_READ, data=None)
def callback_accept(aSocket, aMask):
client_socket, addr = aSocket.accept()
print(f'연결 수락: {addr}')
aSelectors.register(client_socket, selectors.EVENT_READ, data=callback_data)
def callback_data(aSocket, aMask):
aData = aSocket.recv(1024)
if aData:
print(f'받은 데이터: {data}')
aSocket.send(b'Received your message\n')
else:
print('연결 종료')
aSelectors.unregister(sock)
aSocket.close()
aSelectors.register(server_socket, selectors.EVENT_READ, data=callback_accept)
while True:
events = aSelectors.select() # 블럭킹
for temp_key, temp_mask in events:
temp_callback = temp_key.data
temp_callback(temp_key.fileobj, temp_mask)
728x90
'기술자료 > 파이썬' 카테고리의 다른 글
IPC를 위한 파일 소켓 생성 및 사용 방법 초간단 소스 File Socket Python (0) | 2023.12.13 |
---|---|
파이썬 Python 창 띄우기 by pygame (0) | 2021.02.10 |