亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asyncore.py

?? 一個java寫的proxy的例子
?? PY
字號:
# -*- Mode: Python; tab-width: 4 -*-# 	$Id: asyncore.py,v 2.49 2000/05/04 06:06:04 rushing Exp $#	Author: Sam Rushing <rushing@nightmare.com># ======================================================================# Copyright 1996 by Sam Rushing# #                         All Rights Reserved# # Permission to use, copy, modify, and distribute this software and# its documentation for any purpose and without fee is hereby# granted, provided that the above copyright notice appear in all# copies and that both that copyright notice and this permission# notice appear in supporting documentation, and that the name of Sam# Rushing not be used in advertising or publicity pertaining to# distribution of the software without specific, written prior# permission.# # SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN# NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, INDIRECT OR# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.# ======================================================================import exceptionsimport selectimport socketimport stringimport sysimport osif os.name == 'nt':	EWOULDBLOCK	= 10035	EINPROGRESS	= 10036	EALREADY	= 10037	ECONNRESET  = 10054	ENOTCONN	= 10057	ESHUTDOWN	= 10058else:	from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, ENOTCONN, ESHUTDOWNtry:	socket_mapexcept NameError:	socket_map = {}class ExitNow (exceptions.Exception):	passDEBUG = 0def poll (timeout=0.0, map=None):	global DEBUG	if map is None:		map = socket_map	if map:		r = []; w = []; e = []		for fd, obj in map.items():			if obj.readable():				r.append (fd)			if obj.writable():				w.append (fd)		r,w,e = select.select (r,w,e, timeout)		if DEBUG:			print r,w,e		for fd in r:			try:				obj = map[fd]				try:					obj.handle_read_event()				except ExitNow:					raise ExitNow				except:					obj.handle_error()			except KeyError:				pass		for fd in w:			try:				obj = map[fd]				try:					obj.handle_write_event()				except ExitNow:					raise ExitNow				except:					obj.handle_error()			except KeyError:				passdef poll2 (timeout=0.0, map=None):	import poll	if map is None:		map=socket_map	# timeout is in milliseconds	timeout = int(timeout*1000)	if map:		l = []		for fd, obj in map.items():			flags = 0			if obj.readable():				flags = poll.POLLIN			if obj.writable():				flags = flags | poll.POLLOUT			if flags:				l.append (fd, flags)		r = poll.poll (l, timeout)		for fd, flags in r:			try:				obj = map[fd]				try:					if (flags  & poll.POLLIN):						obj.handle_read_event()					if (flags & poll.POLLOUT):						obj.handle_write_event()				except ExitNow:					raise ExitNow				except:					obj.handle_error()			except KeyError:				passdef loop (timeout=30.0, use_poll=0, map=None):	if use_poll:		poll_fun = poll2	else:		poll_fun = poll        if map is None:			map=socket_map	while map:		poll_fun (timeout, map)class dispatcher:	debug = 0	connected = 0	accepting = 0	closing = 0	addr = None	def __init__ (self, sock=None, map=None):		if sock:			self.set_socket (sock, map)			# I think it should inherit this anyway			self.socket.setblocking (0)			self.connected = 1	def __repr__ (self):		try:			status = []			if self.accepting and self.addr:				status.append ('listening')			elif self.connected:				status.append ('connected')			if self.addr:				status.append ('%s:%d' % self.addr)			return '<%s %s at %x>' % (				self.__class__.__name__,				string.join (status, ' '),				id(self)				)		except:			try:				ar = repr(self.addr)			except:				ar = 'no self.addr!'							return '<__repr__ (self) failed for object at %x (addr=%s)>' % (id(self),ar)	def add_channel (self, map=None):		#self.log_info ('adding channel %s' % self)		if map is None:			map=socket_map		map [self._fileno] = self	def del_channel (self, map=None):			fd = self._fileno			if map is None:					map=socket_map			if map.has_key (fd):					# self.log_info('closing channel %d:%s' % (fd, self))					del map [fd]	def create_socket (self, family, type):		self.family_and_type = family, type		self.socket = socket.socket (family, type)		self.socket.setblocking(0)		self._fileno = self.socket.fileno()		self.add_channel()	def set_socket (self, sock, map=None):		self.__dict__['socket'] = sock		self._fileno = sock.fileno()		self.add_channel (map)	def set_reuse_addr (self):		# try to re-use a server port if possible		try:			self.socket.setsockopt (				socket.SOL_SOCKET, socket.SO_REUSEADDR,				self.socket.getsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1				)		except:			pass	# ==================================================	# predicates for select()	# these are used as filters for the lists of sockets	# to pass to select().	# ==================================================	def readable (self):		return 1	if os.name == 'mac':		# The macintosh will select a listening socket for		# write if you let it.  What might this mean?		def writable (self):			return not self.accepting	else:		def writable (self):			return 1	# ==================================================	# socket object methods.	# ==================================================	def listen (self, num):		self.accepting = 1		if os.name == 'nt' and num > 5:			num = 1		return self.socket.listen (num)	def bind (self, addr):		self.addr = addr		return self.socket.bind (addr)	def connect (self, address):		self.connected = 0		try:			self.socket.connect (address)		except socket.error, why:			if why[0] in (EINPROGRESS, EALREADY, EWOULDBLOCK):				return			else:				raise socket.error, why		self.connected = 1		self.handle_connect()	def accept (self):		try:			conn, addr = self.socket.accept()			return conn, addr		except socket.error, why:			if why[0] == EWOULDBLOCK:				pass			else:				raise socket.error, why	def send (self, data):		try:			result = self.socket.send (data)			return result		except socket.error, why:			if why[0] == EWOULDBLOCK:				return 0			else:				raise socket.error, why			return 0	def recv (self, buffer_size):		try:			data = self.socket.recv (buffer_size)			if not data:				# a closed connection is indicated by signaling				# a read condition, and having recv() return 0.				self.handle_close()				return ''			else:				return data		except socket.error, why:			# winsock sometimes throws ENOTCONN			if why[0] in [ECONNRESET, ENOTCONN, ESHUTDOWN]:				self.handle_close()				return ''			else:				raise socket.error, why	def close (self):		self.del_channel()		self.socket.close()	# cheap inheritance, used to pass all other attribute	# references to the underlying socket object.	def __getattr__ (self, attr):		return getattr (self.socket, attr)	# log and log_info maybe overriden to provide more sophisitcated	# logging and warning methods. In general, log is for 'hit' logging	# and 'log_info' is for informational, warning and error logging. 	def log (self, message):		sys.stderr.write ('log: %s\n' % str(message))	def log_info (self, message, type='info'):		if __debug__ or type != 'info':			print '%s: %s' % (type, message)	def handle_read_event (self):		if self.accepting:			# for an accepting socket, getting a read implies			# that we are connected			if not self.connected:				self.connected = 1			self.handle_accept()		elif not self.connected:			self.handle_connect()			self.connected = 1			self.handle_read()		else:			self.handle_read()	def handle_write_event (self):		# getting a write implies that we are connected		if not self.connected:			self.handle_connect()			self.connected = 1		self.handle_write()	def handle_expt_event (self):		self.handle_expt()	def handle_error (self):		(file,fun,line), t, v, tbinfo = compact_traceback()		# sometimes a user repr method will crash.		try:			self_repr = repr (self)		except:			self_repr = '<__repr__ (self) failed for object at %0x>' % id(self)		self.log_info (			'uncaptured python exception, closing channel %s (%s:%s %s)' % (				self_repr,				t,				v,				tbinfo				),			'error'			)		self.close()	def handle_expt (self):		self.log_info ('unhandled exception', 'warning')	def handle_read (self):		self.log_info ('unhandled read event', 'warning')	def handle_write (self):		self.log_info ('unhandled write event', 'warning')	def handle_connect (self):		self.log_info ('unhandled connect event', 'warning')	def handle_accept (self):		self.log_info ('unhandled accept event', 'warning')	def handle_close (self):		self.log_info ('unhandled close event', 'warning')		self.close()# ---------------------------------------------------------------------------# adds simple buffered output capability, useful for simple clients.# [for more sophisticated usage use asynchat.async_chat]# ---------------------------------------------------------------------------class dispatcher_with_send (dispatcher):	def __init__ (self, sock=None):		dispatcher.__init__ (self, sock)		self.out_buffer = ''	def initiate_send (self):		num_sent = 0		num_sent = dispatcher.send (self, self.out_buffer[:512])		self.out_buffer = self.out_buffer[num_sent:]	def handle_write (self):		self.initiate_send()	def writable (self):		return (not self.connected) or len(self.out_buffer)	def send (self, data):		if self.debug:			self.log_info ('sending %s' % repr(data))		self.out_buffer = self.out_buffer + data		self.initiate_send()# ---------------------------------------------------------------------------# used for debugging.# ---------------------------------------------------------------------------def compact_traceback ():	t,v,tb = sys.exc_info()	tbinfo = []	while 1:		tbinfo.append ((			tb.tb_frame.f_code.co_filename,			tb.tb_frame.f_code.co_name,							str(tb.tb_lineno)			))		tb = tb.tb_next		if not tb:			break	# just to be safe	del tb	file, function, line = tbinfo[-1]	info = '[' + string.join (		map (			lambda x: string.join (x, '|'),			tbinfo			),		'] ['		) + ']'	return (file, function, line), t, v, infodef close_all (map=None):	if map is None:		map=socket_map	for x in map.values():		x.socket.close()	map.clear()# Asynchronous File I/O:## After a little research (reading man pages on various unixen, and# digging through the linux kernel), I've determined that select()# isn't meant for doing doing asynchronous file i/o.# Heartening, though - reading linux/mm/filemap.c shows that linux# supports asynchronous read-ahead.  So _MOST_ of the time, the data# will be sitting in memory for us already when we go to read it.## What other OS's (besides NT) support async file i/o?  [VMS?]## Regardless, this is useful for pipes, and stdin/stdout...import osif os.name == 'posix':	import fcntl	import FCNTL	class file_wrapper:		# here we override just enough to make a file		# look like a socket for the purposes of asyncore.		def __init__ (self, fd):			self.fd = fd		def recv (self, *args):			return apply (os.read, (self.fd,)+args)		def write (self, *args):			return apply (os.write, (self.fd,)+args)		def close (self):			return os.close (self.fd)		def fileno (self):			return self.fd	class file_dispatcher (dispatcher):		def __init__ (self, fd):			dispatcher.__init__ (self)			self.connected = 1			# set it to non-blocking mode			flags = fcntl.fcntl (fd, FCNTL.F_GETFL, 0)			flags = flags | FCNTL.O_NONBLOCK			fcntl.fcntl (fd, FCNTL.F_SETFL, flags)			self.set_file (fd)		def set_file (self, fd):			self._fileno = fd			self.socket = file_wrapper (fd)			self.add_channel()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区不卡视频| 国内外成人在线视频| 午夜精品久久久久久久久久| 国产一区欧美二区| 欧美视频一区二区三区四区 | 日韩视频一区二区三区| 中文字幕免费不卡在线| 日韩电影在线看| 91天堂素人约啪| 久久精品人人做人人爽97| 亚洲一区二区三区美女| 成人av在线一区二区| 日韩欧美综合在线| 亚洲影院免费观看| av一二三不卡影片| 久久精品视频免费| 麻豆极品一区二区三区| 欧美性生活影院| 国产精品国产三级国产普通话三级| 视频一区二区不卡| 日本乱人伦aⅴ精品| 欧美激情在线观看视频免费| 久久不见久久见中文字幕免费| 在线一区二区三区四区| 国产精品久久久久aaaa| 国产乱子伦视频一区二区三区| 国产精品国模大尺度视频| 久久福利资源站| 538在线一区二区精品国产| 亚洲黄色片在线观看| 91视频在线看| 中文字幕在线不卡一区二区三区| 国产一区二区三区黄视频 | 成人激情av网| 久久精品男人天堂av| 老司机精品视频线观看86 | 日韩欧美一区二区久久婷婷| 亚洲电影视频在线| 欧美日韩国产首页| 亚洲成人激情社区| 欧美男生操女生| 日韩电影免费一区| 日韩欧美一卡二卡| 狠狠网亚洲精品| 久久精品水蜜桃av综合天堂| 国产精品一区三区| 国产精品免费久久久久| 波多野洁衣一区| 有码一区二区三区| 欧美高清一级片在线| 青草国产精品久久久久久| 欧美一级搡bbbb搡bbbb| 久久精品国产亚洲高清剧情介绍| 欧美成人伊人久久综合网| 国产一区二区剧情av在线| 久久午夜羞羞影院免费观看| 成人高清在线视频| 亚洲精品伦理在线| 7777精品伊人久久久大香线蕉完整版 | 在线观看视频一区二区| 亚洲福利一区二区三区| 欧美一区二区观看视频| 国产在线国偷精品免费看| 久久久亚洲高清| 99国产精品99久久久久久| 亚洲黄色小视频| 91精品午夜视频| 韩国中文字幕2020精品| 国产精品久久久久7777按摩| 欧美日韩在线播| 国产一区二区三区香蕉| 亚洲日本在线看| 日韩欧美中文字幕精品| av亚洲精华国产精华精华| 丝袜美腿亚洲一区| 亚洲国产成人在线| 欧美日韩一级二级三级| 国产福利一区二区三区视频| 亚洲一区影音先锋| 久久婷婷成人综合色| 91极品美女在线| 国产一区二区三区不卡在线观看 | 欧美一卡二卡三卡四卡| 国产v综合v亚洲欧| 调教+趴+乳夹+国产+精品| 久久久久久久久伊人| 欧美三级在线看| 成人免费高清视频| 日韩精品免费专区| 亚洲品质自拍视频网站| 久久免费国产精品| 欧美精品视频www在线观看| 成人av在线一区二区三区| 奇米色一区二区| 一个色综合av| 国产精品毛片a∨一区二区三区| 91麻豆精品国产自产在线| av中文字幕不卡| 国产做a爰片久久毛片| 偷拍一区二区三区| 亚洲女人小视频在线观看| 久久亚洲精精品中文字幕早川悠里| 欧美日韩在线亚洲一区蜜芽| 99久久精品费精品国产一区二区| 久久99精品久久久久婷婷| 香蕉久久夜色精品国产使用方法 | 国产日韩在线不卡| 91精品国产91综合久久蜜臀| 一本色道久久综合狠狠躁的推荐| 国产福利一区二区三区在线视频| 久久成人免费网| 奇米一区二区三区| 日本一道高清亚洲日美韩| 亚洲成人一区二区在线观看| 一区二区三区毛片| 亚洲视频一区二区在线| 国产精品黄色在线观看| 国产精品嫩草影院com| 国产午夜精品久久| 国产欧美一区二区三区网站| 精品国产123| 久久综合色8888| 精品国产伦一区二区三区观看体验| 日韩一区二区麻豆国产| 日韩欧美成人一区二区| 欧美一区二区三区在线观看视频| 91精品啪在线观看国产60岁| 欧美猛男男办公室激情| 91精选在线观看| 精品久久久三级丝袜| 亚洲精品一区在线观看| 久久久久国产精品麻豆ai换脸| 久久久久久久网| 国产精品高潮久久久久无| 亚洲欧美自拍偷拍色图| 亚洲精品自拍动漫在线| 亚洲高清一区二区三区| 偷窥少妇高潮呻吟av久久免费| 午夜久久电影网| 久久99久久久欧美国产| 国产福利精品导航| 国产不卡高清在线观看视频| 91在线视频在线| 欧美日韩一区二区电影| 欧美tickling挠脚心丨vk| 亚洲国产日日夜夜| 另类的小说在线视频另类成人小视频在线| 另类小说欧美激情| 顶级嫩模精品视频在线看| 色悠久久久久综合欧美99| 欧美日韩国产免费一区二区 | 婷婷久久综合九色国产成人| 久久国内精品视频| 成人做爰69片免费看网站| 欧美色网一区二区| 精品久久久网站| 亚洲码国产岛国毛片在线| 日韩成人av影视| voyeur盗摄精品| 欧美一区二区播放| 国产精品久久久一本精品 | 2024国产精品| 亚洲美女在线一区| 久久国产欧美日韩精品| 大美女一区二区三区| 欧美探花视频资源| 国产亚洲欧美日韩俺去了| 亚洲综合区在线| 国产91丝袜在线18| 欧美精品第1页| 国产精品激情偷乱一区二区∴| 日本午夜一本久久久综合| 99久久伊人精品| 欧美精品一区视频| 亚洲成人三级小说| 波多野结衣在线一区| 日韩欧美色综合网站| 夜夜嗨av一区二区三区| 国产不卡视频一区二区三区| 日韩一级大片在线| 亚洲一卡二卡三卡四卡五卡| 从欧美一区二区三区| 日韩三级视频在线看| 亚洲国产精品影院| av电影在线不卡| 久久久久久久国产精品影院| 美洲天堂一区二卡三卡四卡视频| 91久久人澡人人添人人爽欧美| 国产夜色精品一区二区av| 久久99精品国产麻豆婷婷洗澡| 欧美性猛片aaaaaaa做受| 国产精品免费视频一区| 国产剧情av麻豆香蕉精品| 欧美一二三四区在线| 亚洲大片在线观看| 欧美专区在线观看一区| 亚洲天堂中文字幕| av影院午夜一区| 国产精品久久久久久久久免费桃花| 国产一区二区免费看|