socket_server 基本用法1
Posted flags-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket_server 基本用法1相关的知识,希望对你有一定的参考价值。
使用socketserver基本遵循下面几个步骤
1、创建一个类,继承socketserver.BaseRequestHandler;并且重写里面的handle方法
2、实例化TCP_server,将ip地址 以及步骤1中创建的类传递进去
3、使用server_forever处理client发过来的请求。
sockerserver 服务端代码
1 # _*_ coding:utf-8 _*_ 2 import socketserver 3 4 class My_tcphandler(socketserver.BaseRequestHandler): #继承base类,创建自己的TCP处理类 5 def handle(self): #重写base类中handle方法 6 while True: #持续和客户端进行数据交互 7 try: 8 self.data = self.request.recv(1024) #handle中连接的描述不在像socket中的conn,而是self.request进行收发数据 9 print(‘self.client_address:‘,self.client_address) 10 print(‘recv data:‘,self.data) 11 self.request.send(self.data.upper()) #可以直接对字符串进行操作??? 12 except ConnectionResetError as e: 13 print(‘err‘,e) 14 break 15 16 if __name__ == "__main__": 17 host,port = ‘localhost‘,9999 18 server = socketserver.TCPServer((host,port),My_tcphandler) #实例化server,将地址信息以及自己重写的base类作为参数传递进去。 19 server.serve_forever() #调用实例的forever方法
sockerserver 客户端代码
1 # _*_ coding:utf-8 _*_ 2 import socket,hashlib 3 client = socket.socket() #创建连接描述符,指定socket连接的网络层和传输层协议,默认使用ipv4/tcp 4 client.connect(("localhost",9999)) #使用连接描述符连接server,server信息以元组形式传入,包含ip地址和端口号 5 while True: 6 cmd = input("input your command,server will return upper format:") 7 if len(cmd) == 0: 8 continue 9 client.send(cmd.encode(encoding=‘utf-8‘)) 10 print(‘recv data:‘,client.recv(1024).decode() ) 11 client.close()
以上是关于socket_server 基本用法1的主要内容,如果未能解决你的问题,请参考以下文章
linux如何设置启动命令服务:java -jar /huizhi/zgrb/bin/socket_server.jar