Socket传输struck结构体,服务器端跟客户端实例

**

在做即时通讯的时候,考虑到传递数据的准确性,采用了Socket传输,每一条发送的数据都是Struct结构。

**
服务器端涉及到跟数据库的交互,交互的过程我就不说了,这个主要写下客户端跟服务器的交互。
下面是服务器端数据处理的的代码

def DataHand(self,DATA):
    # 处理数据
    global HandledData
    if DATA[0] == 0:
        Data = MySqlHand.PosAllData()
        for row in Data:# 请求所有用户信息
            Dead = row[2]
            User_ID = str(row[0])
            PWD = str(User_ID[5]) + str(len(row[2])) + str(User_ID[1]) + str(Dead) + str(User_ID[2]) + str(User_ID[3]) + str(Dead[0:2])
            NewData = (0, row[0], str(row[1]), PWD, str(row[3]))  # 返回个人信息!
            SendData = TransData.ServerPack(NewData)
            HandledData.append(SendData)
    elif DATA[0] == 1:# 聊天信息
        LocaData = MySqlHand.MsgPost(DATA[1])
        for Row in LocaData:
            NewData = (1,Row[0],Row[1],Row[2],Row[3],Row[4])
            SendData = TransData.ServerPack(NewData)
            HandledData.append(SendData)
    else:
        print("数据有问题!")
       
       **

服务器端数据转化为struct结构代码以及Struct转化为普通python数据的代码

**

def ServerPack(self,argv):#服务器端发送的信息
    if argv[0] == 0:
        StructData =struct.pack('IIII40s40s40s',argv[0],argv[1],ID,ID,self.EncodeData(argv[2]),self.EncodeData(argv[3]),self.EncodeData(argv[4]))
        return StructData
    elif argv[0] == 1:
        StructData = struct.pack('IIII40s40s40s', argv[0], argv[1], argv[2],argv[3], self.EncodeData(argv[4]),self.EncodeData(argv[5]), self.EncodeData(StrData))
        return StructData
def ServerUnpack(self,argv):#服务器端接收到的信息
    StructData = struct.unpack('IIII40s40s40s',argv)
    if StructData[0] == 0:
        Data =(StructData[0],'A')
        return Data
    elif StructData[0] == 1:
        Data =(StructData[0],StructData[1])
        return Data

完整的代码是我的个人资源中的
客户端服务器交互(struct结构).zip

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值