#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import pickle
import thread
PORT = 12345
EOF = '0x00'
class SocketServer(object):
def __init__(self, port=None):
self.port = port
def startup(self):
sock_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_server.bind(('0.0.0.0', self.port))
sock_server.listen(0)
while True:
sock, address = sock_server.accept()
thread.start_new_thread(self.__invoke, (sock, address))
def shutdown(self):
pass
def __invoke(self, sock, address):
try:
full_data = ''
while True:
data = sock.recv(1024)
if data is None:
return
full_data += data
if full_data.endswith(EOF):
full_data = full_data[0:len(full_data) - len(EOF)]
request = pickle.loads(full_data)
response = SimpleRequestHandler().handle(request)
sock.sendall(pickle.dumps(response) + EOF)
return
except Exception as e:
print e
finally:
sock.close()
class SocketClient(object):
def __init__(self, host, port):
self.host = host
self.port = port
def execute(self, request):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((self.host, self.port))
try:
sock.sendall(pickle.dumps(request) + EOF)
full_data = ''
while True:
data = sock.recv(1024)
if data:
full_data += data
if full_data.endswith(EOF):
full_data = full_data[0:len(full_data) - len(EOF)]
response = pickle.loads(full_data)
return response
else:
return None
except Exception as e:
print e
return None
finally:
sock.close()
class SocketRequest(object):
def __init__(self, data):
self.data = data
def __repr__(self):
return repr(self.__dict__)
class SocketResponse(object):
def __init__(self, data):
self.data = data
def __repr__(self):
return repr(self.__dict__)
class SimpleRequestHandler(object):
def __init__(self):
pass
def __repr__(self):
return repr(self.__dict__)
def handle(self, request):
return SocketResponse(request.data)
#!/usr/bin/env python # -*- coding: utf-8 -*- from agent.sockets import * ss = SocketServer(PORT) ss.startup()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pickle
from agent.sockets import *
sc = SocketClient('localhost', PORT)
request = SocketRequest('abc')
response = sc.execute(request)
print request
print response
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有