>  기사  >  백엔드 개발  >  Python의 UDP 소켓 통신에 대한 간단한 분석(코드 포함)

Python의 UDP 소켓 통신에 대한 간단한 분석(코드 포함)

不言
不言앞으로
2018-10-10 15:49:133522검색

이 기사는 Python의 UDP 소켓 통신에 대한 간단한 분석을 제공합니다(코드 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

UDPserver.py

import socket
#导入套接字模块

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# - socket.AF_INET:IPV4
# - socket.STREAM:TCP
# - socket.DGRAM:UDP

s.bind(('',25555))
#绑定套接字有效地址和端口
#''空位任何地址 本地的127.0.0.1 和局域网还有自己真实的ip
print('[+] Server Open.....')

while True:
    try:
        data,c_addr = s.recvfrom(1024)
        #一次性接受1024bytes的数据 ,返回一个元组,其中有数据和地址
        #UDP不需要构成连接,直接发送即可
        print('from:',c_addr)
        #c_addr是一个地址,发送消息的客户端的IP和端口的二元组
        print('say:%s'%(data.decode('utf-8')))
        msg = data.decode('utf-8')
        s.sendto(msg.encode('utf-8'),c_addr)
        #发送信息,其中有两个参数,一个是信息,一个是目标地址和端口
    except KeyboardInterrupt:
        break

print('[+] Server Close......')
s.close

UDPclient.py

import socket
#导入套接字模块

c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# - socket.AF_INET:IPV4
# - socket.STREAM:TCP
# - socket.DGRAM:UDP

while True:
    try:
        msg = input('>>>')
        if msg == 0:
            #判断输入是否为空 就是直接回车了
            continue
        #UDP不需要构成连接,直接发送即可
        c.sendto(msg.encode('utf-8'),('127.0.0.1',25555))
        #发送消息,其中两个参数,第一个是要发送的信息
        #第二个是发送的ip地址和端口,是一个元组

        data,s_addr = c.recvfrom(1024)

        #c_addr是一个地址,发送消息的客户端的IP和端口的二元组
        print('$: %s'%(data.decode('utf-8')))
    except KeyboardInterrupt:
        break

c.close()

UDP 소켓 모델# 🎜🎜 #

UDP는 연결을 형성할 필요가 없으며 직접 전송할 수 있습니다

서버 모델:

data,c_addr = s.recvfrom(1024)#🎜 🎜 #

s.sendto(msg, c_addr)

다른 사람이 보낸 메시지는 s 서버 소켓으로 직접 전송됩니다.

data: 보낸 데이터

c_addr: 보낸 사람

s = 소켓.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind((' ',25555))

recv 보내기

sendto recvfrom

모두 차단되었습니다

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

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