socket连接读取服务端传的数据加校验,保存excel表格

import socket  # 导入 socket 模块
import time
import datetime
from openpyxl import Workbook,load_workbook

sid=1
wb=Workbook()
# sheetnames = wb.get_sheet_names()
# # ws=wb.get_sheet_by_name(sheetnames[0])

ws = wb.worksheets[0]
def writerxl(time1,data,che):
    '''数据写入excel表'''
    global sid
    ws.cell(row=sid, column=1).value = time1
    ws.cell(row=sid, column=2).value = data
    ws.cell(row=sid, column=3).value = che
    sid+=1
    wb.save("新网口通信1.xlsx")
def check(long,data):
    '''数据校验'''
    if long == data[5]:
        z = data[0]
        for i in range(long):
            if i<long - 2:
                z=z^data[i+1]
            else:
                break
        if z==data[long - 1]:
            print('校验成功')
            return "校验成功"
        else:
            print('校验失败')
            return"校验失败"
    else:
        return"数据出错"
def hexShow(argv):
    '''数据解析'''
    result=''
    hlen = len(argv)
    for i in range(hlen):
        hvol = argv[i]
        hhex = '%02x'%hvol
        result += hhex + ' '
# socket.setdefaulttimeout(timeout)  # 这里对整个socket层设置超时时间。后续文件中如果再使用到socket,不必再设置
    print ('%s:' % x, result)
    che=check(hlen,argv)

    writerxl(x, result,che)
s = socket.socket()         # 创建 socket 对象
host = '192.168.8.183' # 获取本地主机名
port = 4001               # 设置端口好
s.connect((host, port))
k=0
while True:#接收数据


    data=s.recv(6)
    if data and len(data)==6:#防粘包
        z=data[5]
        data1=s.recv(z-6)
    else:
        continue
    data=data+data1
    x=datetime.datetime.now()
    hexShow(data)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值