下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
#!/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()
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。