python网络编程SocketServer

已经用C开发好了一个发送TCP数据包的网络程序,用于向另一个程序传送消费订单,现在需要用python开发一个测试数据,测试传送的数据是否正确。在网络通信里我们一般传送的数据格式是二进制,如“0x12345678”,这个在C语言里定义很简单,就是用结构体定义,而在python里,我们也可以使用struct,从而将二进制数据转换成我们需要的值格式。

以下为该程序的简单示例,该程序会监听8801端口,接收新的客户端连接及数据包,数据的前8个字节是两个int类型数据,unpack出cmd_id,以此来判断消息类型,并unpack出我们需要的各种消息数据。

#!/usr/bin/env python

import struct
from socket import *
from time import ctime


HOST = ''
PORT = 8801
ADDR = (HOST, PORT)

servSock = socket(AF_INET, SOCK_STREAM)
servSock.bind(ADDR)
servSock.listen(5)

while True:
    print "waiting for connection..."
    cliSock, addr = servSock.accept()
    print "...connected from:", addr

    while True:
        data = cliSock.recv(1024)
        if not data:
            break

        msg_len, cmd_id = struct.unpack_from('!2i', data, 0)
        print msg_len, cmd_id
        if(cmd_id == 304):
            roomno, sequence, type, name_ch, code, count, price, total = struct.unpack_from('!16sQ50s50s16sQ6s6s', data, 8)
            print "order:", roomno, sequence, type.decode('gb2312'), name_ch.decode('gb2312'), code, count, price, total

        bytes = struct.pack('!2i', 32769, 8)
        cliSock.send(bytes)

    cliSock.close()

servSock.close()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值