참고:
UDP는 그가 보냈든 안 보냈든 보내기만 하기 때문에 서버가 켜지지 않아도 UDP 클라이언트는 여전히 사용하기 좋다
python3은 2진법 데이터만 수발할 수 있고 현식 코드가 필요하며 Python2는 필요없다python2str 형식과bytes 형식은 같은 유형입니다. 믿지 않으시면 직접 유형을 보십시오. 다를 것이 없습니다data = data.encode(encoding="utf-8") # ,data str
# data bytes , , bytes ,
# , ,data ,
b'{"a": "aaaa", "b": "s123d,lo"}'
#
bytes.decode('utf-8')
데이터 전송udpClient.sendto(data,addr) # ,addr = (IP, ) #
데이터 수신data,addr = udpClient.recvfrom(bufsize) # ,data bytes ,
print(data.decode(encoding="utf-8"),'from',addr)
모든 코드 데모
클라이언트 코드:
'''
'''
from socket import *
HOST = '127.0.0.1';PORT = 9999;addr = (HOST,PORT) # IP、 、
s = socket(AF_INET, SOCK_DGRAM) # UDP socket 。
data = 'abc';data = data.encode(encoding="utf-8") # , socket 。
while True:
s.sendto(data, addr) #
# data, addr = s.recvfrom(1024) #
print (data.decode(encoding="utf-8"))
print(addr)
s.close()
서버 코드
# coding: utf-8
'''
# author : zhangjiawei
# @time : 19-6-20 8:55
# IDE : PyCharm
'''
from socket import *
HOST = '127.0.0.1'
PORT = 9999
'''
, , ,
SOCK_DGRAM udp , , 。
'''
s = socket(AF_INET, SOCK_DGRAM)
s.bind((HOST, PORT))
print '...waiting for message..'
while True:
data, address = s.recvfrom(1024)
print data, address,type(data)
s.sendto('this is the UDP server', address)
s.close()