Python에서 UDP 패킷 보내기

Zeeshan Afridi 2023년6월21일
Python에서 UDP 패킷 보내기

오늘은 UDP(User Datagram Protocol)에 대해 알아보고 Python 프로그래밍을 사용하여 UDP 패킷을 보내는 방법을 알아봅니다.

Python에서 UDP 패킷 보내기

UDP(사용자 데이터그램 프로토콜)와 TCP/IP는 다르게 작동합니다. UDP는 모든 데이터가 적절한 순서로 전송되도록 하는 스트림 지향 프로토콜인 TCP와 달리 메시지 지향 프로토콜입니다.

UDP는 오랫동안 지속되는 연결이 필요하지 않기 때문에 UDP 소켓을 설정하는 것이 조금 더 쉽습니다. 반면에 TCP와 달리 UDP 메시지의 전달은 보장되지 않으며 단일 패킷 내에 맞아야 합니다.

파이썬에서 어떻게 할 수 있습니까? Python에는 import해야 하는 socket이라는 내장 모듈이 있습니다.

import socket

socket 모듈을 가져온 후에는 UDP 메시지 전송을 시도할 포트 번호와 IP 주소를 지정해야 합니다.

IP = "127.0.0.1"
PORT = 5003
Message = "Info"

이러한 몇 가지 변수를 지정했으므로 UDP 메시지를 서버로 보낼 소켓을 구축할 시간입니다.

Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.sendto(Message, (IP, PORT))

두 개의 파일을 만들어야 합니다. client.pyserver.py. 클라이언트 및 서버 파일은 모두 해당 서버 및 클라이언트 시스템에 있어야 합니다.

클라이언트 프로그램이 생성되면 다음 단계는 모든 UDP 패킷에 대해 지정된 IP 주소와 포트 번호를 모니터링하는 서버 프로그램을 만드는 것입니다.

클라이언트 Python 스크립트는 이 서버보다 먼저 실행되어야 합니다. 그렇지 않으면 클라이언트 Python 스크립트가 실패합니다.

socket 모듈을 가져오고 IP 주소와 포트 번호를 제공하면 클라이언트 응용 프로그램에서 만든 socket과 정확히 유사한 또 다른 socket을 만들 수 있습니다.

Server.py 파일의 예제 코드:

import socket

IP = "127.0.0.1"
PORT = 5003
MESSAGE = "The meeting is From 10 pm."

print(f"sending information")
print(f"{MESSAGE} to {IP}:{PORT}")


sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE.encode(), (IP, PORT))

출력:

sending information
The meeting is From 10 pm. to 127.0.0.1:5003

또한 서버 socket을 구축한 후 종료될 때까지 이 연결을 계속해서 수신하는 스크립트를 유지하는 코드를 작성해야 합니다.

아래와 같이 간단한 while 루프의 형태를 취합니다.

Client.py 파일의 예제 코드:

import socket

IP = "127.0.0.1"
PORT = 5003

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((IP, PORT))
print(f"start listening to {IP}:{PORT}")
while True:
    data, addr = sock.recvfrom(1024)
    print(f"received message: {data}")

출력:

start listening to 127.0.0.1:5003
received message: The meeting is From 10 pm.

이런 식으로 Python에서 UDP 패킷을 보낼 수 있습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn