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