python 3 socketネットワーク通信(uDp)

4291 ワード

まずpython bytesとstrの2種類の変換の関数encode(),decode()を紹介します.
  • strはencode()法により指定bytes
  • に符号化できる.
  • 逆に、ネットワークまたはディスクからバイトストリームを読み出すと、bytesが読み出されます.bytesをstrにするにはdecode()メソッド:
  • が必要です.
    Error: a bytes-like object is required, not 'str'
    from socket import *
    from time import ctime
    HOST=''
    PORT=21546
    BUFSIZ=1024
    ADDR=(HOST,PORT)
    
    udpSerSock = socket(AF_INET,SOCK_DGRAM)
    udpSerSock.bind(ADDR)
    
    while True:
        print('waiting for message...')
        data,addr=udpSerSock.recvfrom(BUFSIZ)
        data=data.decode()
        print('Get client msg is:', data)
        udpSerSock.sendto(('[%s] %s'%(ctime(),data)).encode(),addr)
        print('...received from and returned to:',addr)
    
    udpSerSock.close()
    
    
    #coding=utf-8
    
    from socket import *
    
    HOST = 'localhost' #  or 'localhost'
    PORT = 21546
    BUFSIZ = 1024
    ADDR=(HOST,PORT)
    
    udp_client = socket(AF_INET,SOCK_DGRAM)
    udp_client.connect(ADDR)
    
    while True:
        data = input('> ')
        #print('data=',data);
        if not data:
            break
        udp_client.sendto(data.encode(),ADDR)
        data ,addr= udp_client.recvfrom(BUFSIZ)
        data=data.decode()
        if not data:
            break
        print(data)
    
    udp_client.close()