udp协议中解决encode和decode编码问题

在编写udp协议的程序中,经常会被来回编码搞得焦头烂额,其实可以利用继承socket类的方法,将编码方式默认为"utf-8"

import socket


class MySocket(socket.socket):# 继承自 socket文件中的socket类,此时socket就是父类
    def __init__(self,encoding='utf-8'):
        self.encoding = encoding
        super(MySocket, self).__init__(type=socket.SOCK_DGRAM)#  执行父类socket中的__init__方法

    def my_sendto(self,msg,addr):
        return self.sendto(msg.encode(self.encoding),addr)# 调用父类中的sendto方法

    def my_recvfrom(self,num):
        msg_r,addr = self.recvfrom(num)# 调用父类的recvfrom方法
        return msg_r.decode(self.encoding),addr

在客户端与服务器端直接调用就可以使用了,后面的编译与解码都是默认"utf-8":

from (存放上述程序的文件) import MySocket

sk = MySocket()

 

posted @ 2018-08-13 16:46  夏天的风在吹  阅读(286)  评论(0编辑  收藏  举报