Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ServerDict(object):
- def __recv_data(self):
- msglen = ''
- while len(msglen) != 4:
- chunk = self.sock.recv(4-len(msglen))
- if chunk == '': raise RuntimeError("socket connection broken")
- msglen = msglen + chunk
- msg, msglen= '', struct.unpack('!i', msglen)[0]
- while len(msg) != msglen:
- chunk = self.sock.recv(msglen-len(msg))
- if chunk == '': raise RuntimeError("socket connection broken")
- msg = msg + chunk
- return marshal.loads(msg)
- def __send_data(self, data):
- self.sock.send(marshal.dumps(data))
- res = self.__recv_data()
- return res
- def __init__(self, serv, port, name=""):
- self.name=os.urandom(16).encode('hex') if not name else name
- self.server=serv
- self.port=port
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.sock.connect((self.server, self.port))
- self.__send_data((self.name,(),{}))
- def __del__(self): #Remove variable on server side
- self.sock.close()
- def __setitem__(self, i, y):
- if type(i) is not tuple: i=(i,)
- self.__send_data((self.name,i,y))
- def __getitem__(self, i):
- if type(i) is not tuple: i=(i,)
- return self.__send_data((self.name, i))
- def __repr__(self):
- return repr(self.__getitem__(()))
- d=ServerDict('127.0.0.1', 13373, "sessions")
- d[1] = {2:3,4:5}
- ###############
- Traceback (most recent call last):
- File "C:\WinPython-32bit-2.7.3.2\tcpclient.py", line 82, in <module>
- d[1] = {2:3,4:5}
- File "C:\WinPython-32bit-2.7.3.2\tcpclient.py", line 70, in __setitem__
- self.__send_data((self.name,i,y))
- File "C:\WinPython-32bit-2.7.3.2\tcpclient.py", line 49, in __send_data
- res = self.__recv_data()
- File "C:\WinPython-32bit-2.7.3.2\tcpclient.py", line 37, in __recv_data
- chunk = self.sock.recv(4-len(msglen))
- socket.error: [Errno 10053] Программа на вашем хост-
Advertisement
Add Comment
Please, Sign In to add comment