《python核心编程》读书笔记-创建UDP服务端/客户端

UDP服务器

伪码

ss = socket() # 创建服务器套接字
ss.bind() # 绑定服务器套接字
inf_loop: # 服务器无限循环
    cs = ss.recvfrom()/ss.sendto() # 关闭(接收/发送)
ss.close() # 关闭服务器套接字

具体实现

[root@localhost ~]# cat udpserv.py 
#!/usr/bin/env python3.4

from socket import *  #socket模块不需要下载,自带了
from time import ctime
 
HOST = ''                 
PORT = 21567             
BUFSIZE = 1024
ADDR = (HOST, PORT)

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

while True:
    print ('waiting for message...')
    data,addr=udpSerSock.recvfrom(BUFSIZE)
    udpSerSock.sendto(('[%s] %s' % (ctime(),data.decode())).encode(),addr)
    print('...received from and returned to : ',addr)
udpSerSock.close()

UDP客户端

伪码

cs = socket() # 创建客户端套接字
comm_loop: # 通信循环
    cs.sendto()/cs.recvfrom() # 对话(发送/接收)
cs.close() # 关闭客户端套接字

具体实现

[root@localhost ~]# cat udpcli.py 
#!/usr/bin/env python3.4

from socket import *  #socket模块不需要下载,自带了
 
HOST = ''                 
PORT = 21567             
BUFSIZE = 1024
ADDR = (HOST, PORT)

udpCliSock = socket(AF_INET,SOCK_DGRAM)

while True:
    data= input('> ')
    if not data:
        break
    udpCliSock.sendto((data.encode()),ADDR)
    data,addr=udpCliSock.recvfrom(BUFSIZE)
    if not data:
        break
    print(data)

udpCliSock.close()

以上都是测试成功的部分,下面是遇到的错误的总结

遇到的错误

客户端遇到的问题

[root@localhost ~]# ./udpcli.py 
> 123
Traceback (most recent call last):
  File "./udpcli.py", line 16, in <module>
    udpCliSock.sendto(data,ADDR)
TypeError: 'str' does not support the buffer interface

问题的部分代码

udpCliSock.sendto(data,ADDR)

解决方法,修改为

    udpCliSock.sendto(data.encode(),ADDR)

服务端遇到的问题

[root@localhost ~]# ./udpserv.py 
waiting for message...
Traceback (most recent call last):
  File "./udpserv.py", line 17, in <module>
    udpSerSock.sendto('[%s] %s' % (ctime(),data),addr)
TypeError: 'str' does not support the buffer interface

有问题的部分代码

udpSerSock.sendto('[%s] %s' % (ctime(),data),addr)

解决方法,修改为

udpSerSock.sendto(('[%s] %s' % (ctime(),data.decode())).encode(),addr)

参考的链接 https://blog.csdn.net/chuanchuan608/article/details/17915959

猜你喜欢

转载自blog.csdn.net/L835311324/article/details/86141397