Python socket 应用服务端管理

	客户端和服务端通信主要由TCP/IP和Udp协议来完成,而socket连接将网络层协议进行方法封装,从而通过套接字
	的方式从而实现客户端与服务端之间的通信,应用类似与QQ、微信等通信工具原理一致;本文主要应用于公司内部
	服务端对于服务的管理,在本地自动化测试过程中可以通过本地的脚本,利用socket连接完成对服务端服务的管理,
	或者对数据库操作等,这样的方式在公司有堡垒机的方式下,只要开放特定的端口就可以实现,从而跳过了对堡垒机
	代码实现繁琐带来的问题;
# 客户端代码
# -*- coding: utf-8 -*-

import socket,time

def client(Appid):
    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_client_socket.connect(('10.30.26.125', 9380))
    send_data = Appid.encode('utf8')
    tcp_client_socket.send(send_data)
    recv_data = tcp_client_socket.recv(1024)
    print(recv_data)
    recv_content = recv_data.decode('utf8')
    print('服务端数据响应:', recv_content)
    tcp_client_socket.close()


if __name__ == '__main__':
        client('28140')

在这里插入代码片
# 服务端代码
# 服务端代码通过多线程的方式可以同时响应多个客户端的连接并释放;
# -*- coding: utf-8 -*-

import socket
import threading,os,time


# 处理客户端的请求操作
def handle_client_request(service_client_socket, ip_port):
    while True:
        recv_data = service_client_socket.recv(1024)
        if recv_data:
            # print(recv_data.decode('utf8'), ip_port)
            recv_data = recv_data.decode('utf8')
            recv_data = recv_data.decode('utf8')
            if recv_data[0] == '28140':
                # 服务端服务操作代码块
                # 服务端服务操作代码块

            service_client_socket.send('服务端消息接受完毕,ok!!!'.encode('utf8'))
        else:
            print('客户端关闭:', ip_port)
            break
    service_client_socket.close()


if __name__ == '__main__':
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 设置端口复用
    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    tcp_server_socket.bind(('ip', port))
    # 最大等待连接数为128
    tcp_server_socket.listen(128)
    while True:
        service_client_socket, ip_port = tcp_server_socket.accept()
        print('客户端连接成功', ip_port)
        sub_thread = threading.Thread(target=handle_client_request, args=(service_client_socket, ip_port))
        # 设置守护线程
        sub_thread.setDaemon(True)
        sub_thread.start()
在这里插入代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值