socket Service-Client
发布时间:2020-12-17 17:21:04 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/env python# coding: utf-8## author: Tim Wang# date: 2015-05-21# filename: common_lib/net/sockettools.pyimport socketimport sysfro
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/usr/bin/env python # coding: utf-8 # # author: Tim Wang # date: 2015-05-21 # filename: common_lib/net/sockettools.py import socket import sys from thread import start_new_thread import cPickle as pickle def mksocket(): try: return socket.socket(socket.AF_INET,socket.SOCK_STREAM) except socket.error,msg: print 'Failed to create socket. Error code: %s,' % msg[0] print 'Error message : %s' % msg[1] sys.exit(1) def clientthread(conn,func): while True: data = conn.recv(1024) if not data or not data.strip(): break conn.sendall(func(eval(data))) print "Peer:",conn.getpeername(),conn.close() print "disconnect." def pkl(func): def _wrap(argkwg): args,kwgs = argkwg result = func(*args,**kwgs) return pickle.dumps(result) return _wrap class SocketService(object): def __init__(self,addr,listen=10,func=None): self.addr = addr self.sock = mksocket() self.func = None try: self.sock.bind(self.addr) except socket.error,msg: print 'bind failed. error: [%d] %s' % (msg[0],msg[1]) sys.exit(2) self.sock.listen(listen) self.register(func) def register(self,fn): default = lambda x: 'OK...' + x self.func = fn or default def sloop(self,func=None): if func: self.register(func) while 1: conn,addr = self.sock.accept() print addr,"connected." start_new_thread(clientthread,(conn,self.func)) self.sock.close() class SocketAgent(object): def __init__(self,addr): self.addr = addr self.sock = mksocket() self.sock.connect(self.addr) def __call__(self,*args,**kwgs): self.sock.sendall(repr((args,kwgs))) return pickle.loads(self.sock.recv(4096)) def __del__(self): self.sock.close() 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |