Python 3.x에서 Simple TCP Server/Client 예제 (Sample Code)
절름발이 프로그래머/Python / 2010. 3. 10. 16:56
Python 2.x 대에서 3.x 대로 오면서 달라진 것이 있었습니다.
socket send() 함수와 recv()함수에서 주고받는 데이터 형식이 무조건 바이트 형식으로 바뀌었습니다.
그래서 기존 2.x 소스를 약간 수정하여야 합니다.
참고한 소스는 http://www.prasannatech.net/2008/07/socket-programming-tutorial.html 에 있는 파이썬 소스들입니다.
수정된 소스들은 다음과 같습니다.
TCP Server Code:
# TCP server example
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("", 5000))
server_socket.listen(5)
print ("TCPServer Waiting for client on port 5000")
while 1:
client_socket, address = server_socket.accept()
print ("I got a connection from ", address)
while 1:
data = input('SEND( TYPE q or Q to Quit):')
if(data == 'Q' or data == 'q'):
client_socket.send (data.encode())
client_socket.close()
break;
else:
client_socket.send(data.encode())
data = client_socket.recv(512).decode()
if(data == 'q' or data == 'Q'):
client_socket.close()
break;
else:
print ("RECEIVED:" , data)
break;
server_socket.close()
print("SOCKET closed... END")
TCP Client Code:
# TCP client example
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("www.hsd.or.kr", 5000))
while 1:
data = client_socket.recv(512).decode()
if ( data == 'q' or data == 'Q'):
client_socket.close()
break;
else:
print ("RECEIVED:" , data)
data = input ( "SEND( TYPE q or Q to Quit):" )
if ( data == 'q' or data == 'Q'):
client_socket.send(data.encode())
client_socket.close()
break;
else:
client_socket.send(data.encode())
print ("socket colsed... END.")