>  기사  >  백엔드 개발  >  Python의 소켓 UDP 통신 소개(코드 포함)

Python의 소켓 UDP 통신 소개(코드 포함)

不言
不言앞으로
2018-10-08 17:13:282973검색

이 글은 Python에서 소켓을 통한 UDP 통신 구현에 대한 소개입니다(코드 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. .

UDP

TCP는 안정적인 연결을 설정하며, 두 통신 당사자 모두 스트림 형식으로 데이터를 보낼 수 있습니다. TCP와 비교할 때 UDP는 연결이 없는 프로토콜입니다. UDP 프로토콜을 사용하는 경우에는 연결을 설정할 필요가 없으며, 상대방의 IP 주소와 포트 번호만 알면 데이터 패킷을 직접 보낼 수 있습니다. 하지만 닿을 수 있을지는 모르겠습니다.

UDP 프로토콜을 통해 데이터를 전송하는 방법을 살펴보겠습니다. TCP와 마찬가지로 UDP를 사용하는 통신 당사자도
클라이언트와 서버
소켓 구조로 나누어 UDP 통신을 구현합니다

Python의 소켓 UDP 통신 소개(코드 포함)#🎜🎜 #

UDP 서버

TCP와 마찬가지로 UDP를 사용하는 통신 주체도 클라이언트와 서버로 구분됩니다. 서버는 먼저 포트를 바인딩해야 합니다. 하지만 클라이언트의 연결을 모니터링할 필요는 없습니다

#server
import socket
#创建Socket时, SOCK_DGRAM 指定了这个Socket的类型是UDP。
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('192.168.1.165',7890))
#不需要调用 listen() 方法, 而是直接接收来自任何客户端的数据
print('服务端已开启7890端口,正在等待被连接...')
#recvfrom() 方法返回数据和客户端的地址与端口, 这样, 服务器收到数据后,
#直接调用 sendto() 就可以把数据用UDP发给客户端
data,address = server.recvfrom(1024)
print("client>>",data.decode('utf-8'))
print("客户端连接的socket地址:",  address)
server.sendto(b'drink more water!',address)
server.close()
UDP client

클라이언트가 UDP를 사용할 때 먼저 UDP 기반 소켓을 생성한 다음 connect()를 호출할 필요가 없습니다. sendto()를 통해 서버에 직접 데이터를 보냅니다

import socket
#创建Socket时, SOCK_DGRAM 指定了这个Socket的类型是UDP。
client = socket.socket(type=socket.SOCK_DGRAM)
send_data  =b'hello sheenstar'
client.sendto(send_data,('192.168.1.165',7890))
re_Data,address = client.recvfrom(1024)
print('server>>',re_Data.decode('utf-8'))
client.close()
테스트 결과

두 개의 명령줄을 사용하여 각각 서버 및 클라이언트 테스트를 시작합니다# 🎜🎜#서버 열기#🎜🎜 #


Python의 소켓 UDP 통신 소개(코드 포함) UDP 통신 완료

# 🎜🎜#

위 내용은 Python의 소켓 UDP 통신 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제