python3 socket UDP 프로그래밍

1786 단어

참고:


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()

     
     

    좋은 웹페이지 즐겨찾기