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
    评论
要使用Python创建一个TCP服务器并读取数据,你可以使用socket模块中的socket对象。以下是一个示例代码,演示如何创建一个TCP服务器并从客户端接收数据,并将其转换为整数输出: ```python import socket # 创建TCP socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 定义服务器IP和端口 server_ip = '192.168.0.1' # 替换为实际的服务器IP地址 server_port = 5000 # 替换为实际的服务器端口号 # 绑定IP和端口 server_socket.bind((server_ip, server_port)) # 监听连接 server_socket.listen(1) print("等待客户端连接...") # 接受客户端连接 client_socket, client_address = server_socket.accept() print("客户端已连接:", client_address) # 接收数据 data = client_socket.recv(1024) # 指定每次接收的最大字节数 # 关闭连接 client_socket.close() server_socket.close() # 将接收到的数据转换为整数输出 integer_data = int.from_bytes(data, byteorder='big') print(integer_data) ``` 在上述代码中,首先创建了一个TCP socket对象,并绑定了服务器IP地址和端口号。然后,使用`listen()`方法开始监听连接。当有客户端连接时,使用`accept()`方法接受客户端连接,并返回一个新的socket对象和客户端地址。然后,使用新的socket对象接收数据,并将其转换为整数输出。最后,关闭连接。 请注意,上述代码仅提供了基本的服务器接收和转换操作,你可能需要根据实际情况进行适当的修改和异常处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值