python发送byte数据组到tcp的server

1 篇文章 0 订阅

前一段时间需要和一个tcp服务端进行数据交互,有约定好的数据报文格式,但是是以十六进制形式定义的的,所以在测试数据反馈的时候用python写了一个byte[]数据发送的tcp clinet端的测试demo
代码如下:

from socket import *
import struct
import time
import sys
def init(x):#初始化需要发送的list数组
    lists = [[0]*8 for i in range(7)]#定义list的行列大小
    for i in range(7):
        lists[i].append(0)#填充0
        lists[i][3] = 5
        lists[i][4] = int(x)#填充序号
    lists[0][7] = 16#填充指令id
    lists[1][7] = 17
    lists[2][7] = 18
    lists[3][7] = 19
    lists[4][7] = 20
    lists[5][7] = 24
    lists[6][7] = 25
    return lists

def main():
    # 1.创建tcp_client_socket 套接字对象
    tcp_client_socket = socket(AF_INET,SOCK_STREAM)
    # 作为客户端,主动连接服务器较多,一般不需要绑定端口

    # 2.连接服务器
    tcp_client_socket.connect(("127.0.0.1",7001))
    a = sys.argv[1]
    while True:
        for i in range(7):
            print(init(a)[i])
            """无限循环可以实现无限发送"""
            # 3.向服务器发送数据
            cmd = init(a)[i]
            to_server = ""
            for i in range(len(cmd)):
                to_server += chr(cmd[i])
            print(repr(to_server))
            print("发送的消息为:",to_server.encode())
            tcp_client_socket.send(to_server.encode())# 在linux中默认是utf-8编码
        # 在udp协议中使用的sendto() 因为udp发送的为数据报,包括ip port和数据,           # 所以sendto()中需要传入address,而tcp为面向连接,再发送消息之前就已经连接上了目标主机
        #time.sleep(1)
        # 4.接收服务器返回的消息
            recv_data = tcp_client_socket.recv(1024)  # 此处与udp不同,客户端已经知道消息来自哪台服务器,不需要用recvfrom了
            if recv_data:
                print("返回的消息为:",recv_data)
            else:
                print("对方已离线。。")
                break

    tcp_client_socket.close()


if __name__ == '__main__
	main()
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值