socket套接字模块中如何固定网络通信的编码格式

       在利用socket模块进行网络通信时,我们常常需要在发送端对所传输的内容利用encode进行编码,而在接收端常需要利用decode进行解码。在日常使用中为避免反复输入编码和解码的格式,可以对发送和接收函数首先进行相应的处理,然后再调用新得到的模块。这样可以保证前后编码格式的一致性,也能方便有效的改变需要进行编码的格式。以下代码编码展示了udp通信协议下的修改方法:

import socket

class Mysocket(socket.socket):
    def __init__(self,encoding='utf-8'):
        self.encoding=encoding
        super(Mysocket,self).__init__(type=socket.SOCK_DGRAM)  #继承了父类socket.socket类中的方法

    def mst(self,msg_s,addr):
        return self.sendto(msg_s.encode(self.encoding),addr)

    def mrf(self,num):
        msg_r,addr=self.recvfrom(num)
        return msg_r.decode(self.encoding),addr

       在对编码格式确定之后,在接下来的使用中只需要调用这个新的模块,选用新定义的发送和接收方法即可实现,固定编码格式。示例如下所示:

#客户端
import mysocket

msk=mysocket.Mysocket()

msk.mst('wodeej家居安防',('127.0.0.1',8000))

msk.close()


#服务器端
import mysocket

msk=mysocket.Mysocket()

msk.bind(('127.0.0.1',8000))

msg_r,addr=msk.mrf(1024)
print(msg_r)

msk.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值