|
#服务端:
import socketserver
class Mysite(socketserver.BaseRequestHandler): # 必须继承socketserver基类
def handler(self): # 重写基类里的handler()方法,在这个方法里处理接收、发送请求
while True:
recv_data = self.request.recv(1024)
data = json.loads(recv_data.decode()) # 为什么用json?,因为我喜欢。。这包装数字、字符、列表等等数据类型通吃
print(data)
if data.lower() == "exit": # 检测到exit退出
print("客户端退出!")
break
self.request.send(json.dumps(data.lower()).encode()) # 发送转换小写的数据给客户端,然后进入到下一个循环
my_server = socketserver.TCPserver(("localhost", 9999), Mysite) # 实例化socketserver,并传送服务器ip、port和子类
my_server.serve_forever()
# 客户端
import socket
class Myclient(object):
def __init__(obj): # 接收一个socket实例化的对象
self.conn = obj
def handler(self,ip,prot): # 定义一个数据交互的方法
self.conn.connect((ip,port)) # 绑定链接,其它把它放在init方法里是不是会更好?
while Ture:
# 循环发送、接收数据
cmd = input('输入转换的字符,exit退出!')
if cmd.strip().lower() == 'exit': # 如果输入EXIT退出
print('退出!')
break
self.conn.send(json.dumps(cmd).encode()) # 发送输入的数据
recv_data = self.conn.recv(1024) # 接收服务器转换后的数据
data = json.loads(recv_data.decode()) # json解码
print('转换的:{}'.format(data))
my_socket = socket.socket() # 实例化socket对象
my_client = Myclient(my_socket) # 实例化自定义类,并传入实例化的socket对象
my_client.handler("localhost",9999) # 调用数据交互方法
"""以上代码博客里手打,未经测试。 """ |
|
|