Python UDP Server and Client

Python UDP Server and Client

最近自学python, 尝试写了些Python 的server和client

  • Python UDP Server
  • Python UDP Client
  • str 与bytes的转换

Python UDP Server

不同于TCP需要先建立虚拟的连接,UDP不需要事先建立连接。只要知道互相的ip地址和端口号就可以发消息通信,UDP不像TCP那样保证可靠性,所以更加快速便捷。以下是Python UDP server端代码

from socket import *
from time import ctime

HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)

udpSerSock = socket(AF_INET,SOCK_DGRAM)
udpSerSock.bind(ADDR)

while True:
    data, addr = udpSerSock.recvfrom(BUFSIZ)
    print('Received from %s:%s.' % addr )
    print(data)
    reply = 'Hello, %s!' % data.decode('utf-8')
    udpSerSock.sendto(reply.encode('utf-8'), addr)

UDP server需要绑定一个端口号,然后把自己的IP地址和端口号告诉提供需要使用的人,对方通过IP和端口号即可向server端发送消息。

Python UDP Client

当我们知道了Server给我们的IP和端口号,我们就可以直接向UDP server发送消息,代码非常简单,入下:

from socket import *

HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)

udpCliSock = socket(AF_INET,SOCK_DGRAM)

while True:
    data = input('>')
    msg = data.encode('utf-8')

    # for data in [b'Michael', b'Tracy', b'Sarah']:
    # 发送数据:
    udpCliSock.sendto(msg, (ADDR))
    # 接收数据:
    print(udpCliSock.recv(BUFSIZ).decode('utf-8'))

udpCliSock.close()

str和bytes

代码中发送数据默认要求bytes类型,而从input方法中得到的输入时str类型,所以需要转换一下。str to bytes转换方式入下:
msg = data.encode(‘utf-8’)

另外需要注意的是上述代码是Python3下的,未在Python2下测试过。


猜你喜欢

转载自blog.csdn.net/qq_33374476/article/details/74132300