Example #1
0
serversocket.setblocking(0)

epoll = select.epoll()
epoll.register(serversocket.fileno(),select.EPOLLIN|select.EPOLLET)

def read(fileno,datalist):
	recv_result = ''
	try:
		while True:
			  recv_result += connections[fileno].recv(1024)
	except socket.error, msg:
		  pass
	datalist[fileno] = recv_result#把接收到结果赋给该事件
	recv_pack = struct.unpack('ii64s',datalist[fileno])
	if recv_pack[1] == 10:
		check = hash.get_info(recv_pack[2].replace('\0','').strip())#把空字符转换成空格,再去掉空格
		if check != None:
			check_rel = check.split('\\')
			tem = []
			for val in check_rel:
				tem.append(struct.pack('32s',val))#把每个返回结果都打包成32个字节
			send_val = ''.join(tem)#把列表整合成字符串
			backmsg[fileno] = struct.pack('ii224s',232,11,send_val)
			epoll.modify(fileno, select.EPOLLOUT | select.EPOLLET)
		else:
			backmsg[fileno] = struct.pack('ii224s',8,11,'\0')
			epoll.modify(fileno, select.EPOLLOUT | select.EPOLLET)
	elif recv_pack[1]==9:
		hash.update_hashtable('Telephone', 'root', 'IceFlow2012')
		epoll.unregister(fileno)
Example #2
0
 def select(self, info):
     result = hash.get_info(info)
     return result
Example #3
0
             connections[connection.fileno()] = connection
             addresses[connection.fileno()] = address
             datalist[connection.fileno()] = ''
     except socket.error:
         pass
 elif event & select.EPOLLIN:  #系统内的事件比较 做与运算
     recv_result = ''
     try:
         while True:
             recv_result += connections[fileno].recv(1024)
     except socket.error, msg:
         pass
     datalist[fileno] = recv_result  #把接收到结果赋给该事件
     recv_pack = struct.unpack('ii64s', datalist[fileno])
     if recv_pack[1] == 10:
         check = hash.get_info(recv_pack[2].replace(
             '\0', '').strip())  #把空字符转换成空格,再去掉空格
         if check != None:
             check_rel = check.split('\\')
             tem = []
             for val in check_rel:
                 tem.append(struct.pack('32s',
                                        val))  #把每个返回结果都打包成32个字节
             send_val = ''.join(tem)  #把列表整合成字符串
             backmsg[fileno] = struct.pack('ii224s', 232, 11,
                                           send_val)
             epoll.modify(fileno, select.EPOLLOUT | select.EPOLLET)
         else:
             backmsg[fileno] = struct.pack('ii224s', 8, 11, '\0')
             epoll.modify(fileno, select.EPOLLOUT | select.EPOLLET)
     elif recv_pack[1] == 9:
         hash.update_hashtable('Telephone', 'root', 'IceFlow2012')
Example #4
0
	def select(self,info):
		result = hash.get_info(info)
		return result