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