파이썬 TCP통신과 UDP통신은 socket 라이브러리를 import하여 쉽게 구현할 수 있습니다. 이번에도 예제로 쉽게 서버와 클라이언트를 나눠서 작성해보았습니다.
파이썬 TCP 통신
TCP 통신과 UDP 통신은 전체적으로 코드가 비슷하지만 세부적으로 약간씩 다릅니다. 우선 TCP 통신 서버예제를 보시죠.
파이썬 TCP 통신 서버
import socket
host = "127.0.0.1" #로컬호스트
port = 2001 #포트번호는 겹치지않는선에서 정하자
serverSocket= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.bind((host, port))
serverSocket.listen()
서버 쪽에서는 호스트 ip번호와 포트번호를 정하여 서버 소켓을 열고 데이터를 받을 준비를 하면 됩니다. 코드자체가 굉장히 간단하므로 한번보면 이해가 될겁니다.
파이썬 TCP 통신 클라이언트
import socket
client = '127.0.0.1'
port = 2001
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((client, port))
sock.send('TEST DATA'.encode()) # 인코딩
서버예제와 같이 연결할 호스트 ip 주소와 포트를 정한 후 소켓을 열고 연결합니다. 그 후 보내고자 하는 데이터를 send함수로 보내시면 됩니다.
파이썬 UDP 통신
UDP 통신같은 경우 TCP통신과 코드적으로는 거의 똑같습니다. 다른점으로는 socket을 열때 인자값이 바뀐다는것과 메시지를 보내는 함수가 다르다는것 정도겠네요.
파이썬 UDP 통신 서버
import socket
host = '127.0.0.1'
port = 2001
severSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSocket.bind((host,port))
data,address = serverSocket.recvform(200)
TCP통신과 바뀐거리곤 socket.SOCK_DGRAM인자값과 데이터를 수신하는 함수입니다. 나머지 부분은 TCP 통신과 같습니다.
파이썬 UDP 통신 클라이언트
import socket
client = 127.0.0.1
port = 2001
clientSocket=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
clientSocket.sendto(b'\x02\x52\x32\x03', (client, port))
UDP통신 클라이언트 예제입니다. 이번에는 소켓 내부 함수 sendto로 UDP서버에 바이너리 값을 보내는 예제를 들었습니다.
마치며
실제로 내부에서 프로그램을 두개 켜고 테스트해봐도 되지만 저번글에 VSPE와 comanalyzer로 가상컴포트를 여는 글을 발행한적이 있습니다. comanalyzer에서 실제로 서버도 열어 테스트를 진행 할 수도 있습니다. 이전글을 참고하여 같이 테스트하는 것 도 도움이 되실겁니다.
'개발' 카테고리의 다른 글
파이썬 keras layers LSTM 간단한 예제 (0) | 2022.05.11 |
---|---|
파이썬 DB연결 (pymssql - insert select update 예제) (0) | 2022.05.10 |
파이썬 영상저장 (opencv를 이용한 ip카메라 영상저장) (0) | 2022.03.02 |
파이썬 문자인식 숫자인식 해보자(pytesseract-OCR,deep-text-recognition) (0) | 2022.02.24 |
파이썬 가상 컴포트 열기 시리얼통신 (0) | 2022.01.27 |
댓글