本文整理匯總了Python中socket.SO_SNDBUF屬性的典型用法代碼示例。如果您正苦於以下問題:Python socket.SO_SNDBUF屬性的具體用法?Python socket.SO_SNDBUF怎麽用?Python socket.SO_SNDBUF使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類socket
的用法示例。
在下文中一共展示了socket.SO_SNDBUF屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: connection_made
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def connection_made(self, transport):
self.transport = transport
self.log.debug('SerialConnection: port opened: {}'.format(transport))
if self.is_net:
# we don't want to buffer the entire file on the host
transport.get_extra_info('socket').setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2048)
self.log.info("SerialConnection: Setting net tx buf to 2048")
# for net we want to limit how much we queue up otherwise the whole file gets queued
# this also gives us more progress more often
transport.set_write_buffer_limits(high=1024, low=256)
self.log.info('SerialConnection: Buffer limits: {} - {}'.format(transport._high_water, transport._low_water))
else:
transport.set_write_buffer_limits(high=1024, low=64)
self.log.info('SerialConnection: Buffer limits: {} - {}'.format(transport._high_water, transport._low_water))
# transport.serial.rts = False # You can manipulate Serial object via transport
transport.serial.reset_input_buffer()
transport.serial.reset_output_buffer()
# transport.serial.set_low_latency_mode(True)
# print(transport.serial)
示例2: connect
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def connect(self, host, port):
self.__state = CONNECTION_STATE.DISCONNECTED
self.__fileno = None
self.__socket = socket.socket(_getAddrType(host), socket.SOCK_STREAM)
self.__socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, self.__sendBufferSize)
self.__socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, self.__recvBufferSize)
self.__socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.__socket.setblocking(0)
self.__readBuffer = bytes()
self.__writeBuffer = bytes()
self.__lastReadTime = monotonicTime()
try:
self.__socket.connect((host, port))
except socket.error as e:
if e.errno not in (socket.errno.EINPROGRESS, socket.errno.EWOULDBLOCK):
return False
self.__fileno = self.__socket.fileno()
self.__state = CONNECTION_STATE.CONNECTING
self.__poller.subscribe(self.__fileno,
self.__processConnection,
POLL_EVENT_TYPE.READ | POLL_EVENT_TYPE.WRITE | POLL_EVENT_TYPE.ERROR)
return True
示例3: __onNewConnection
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def __onNewConnection(self, descr, event):
if event & POLL_EVENT_TYPE.READ:
try:
sock, addr = self.__socket.accept()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, self.__sendBufferSize)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, self.__recvBufferSize)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
sock.setblocking(0)
conn = TcpConnection(poller=self.__poller,
socket=sock,
timeout=self.__connectionTimeout,
sendBufferSize=self.__sendBufferSize,
recvBufferSize=self.__recvBufferSize)
self.__onNewConnectionCallback(conn)
except socket.error as e:
if e.errno not in (socket.errno.EAGAIN, socket.errno.EWOULDBLOCK):
self.unbind()
return
if event & POLL_EVENT_TYPE.ERROR:
self.unbind()
return
示例4: modify_buff_size
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def modify_buff_size():
sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
# Get the size of the socket's send buffer
bufsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
print ("Buffer size [Before]:%d" %bufsize)
sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
sock.setsockopt(
socket.SOL_SOCKET,
socket.SO_SNDBUF,
SEND_BUF_SIZE)
sock.setsockopt(
socket.SOL_SOCKET,
socket.SO_RCVBUF,
RECV_BUF_SIZE)
bufsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
print ("Buffer size [After]:%d" %bufsize)
開發者ID:PacktPublishing,項目名稱:Python-Network-Programming-Cookbook-Second-Edition,代碼行數:20,代碼來源:1_8_modify_buff_size.py
示例5: create_socketpair
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def create_socketpair(size=None):
"""
Create a :func:`socket.socketpair` for use as a child's UNIX stdio
channels. As socketpairs are bidirectional, they are economical on file
descriptor usage as one descriptor can be used for ``stdin`` and
``stdout``. As they are sockets their buffers are tunable, allowing large
buffers to improve file transfer throughput and reduce IO loop iterations.
"""
if size is None:
size = mitogen.core.CHUNK_SIZE
parentfp, childfp = socket.socketpair()
for fp in parentfp, childfp:
fp.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, size)
return parentfp, childfp
示例6: set_bootstrap_info
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def set_bootstrap_info(self, req):
cmd = jsonobject.loads(req[http.REQUEST_BODY])
info = jsonobject.dumps(cmd.info, True)
socket_path = cmd.socketPath
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1)
buf_size = s.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
info_len = len(info)
if info_len < buf_size:
# as there is no fflush() in python, we have to create a message
# matching to the socket buffer to force it to send the message immediately
padding_len = buf_size - info_len
padding = ' ' * padding_len
info = '%s%s' % (info, padding)
try:
logger.debug('send appliance vm bootstrap info to %s\n%s' % (socket_path, info))
s.connect(socket_path)
s.sendall(info)
finally:
s.close()
rsp = PrepareBootstrapInfoRsp()
return jsonobject.dumps(rsp)
示例7: server_bind
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def server_bind(self):
sock = self.socket
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, True)
self.RequestHandlerClass.bufsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
SocketServer.TCPServer.server_bind(self)
示例8: connect
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def connect(self):
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.settimeout(DEFAULT_SOCKET_TIMEOUT)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, BUFF_SIZE)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, BUFF_SIZE)
try:
sock.connect(str(self.server_address))
except socket.error:
sock.close()
raise Exception(
"Could not connect to {addr}".format(addr=self.server_address)
)
self.sock = sock
示例9: open
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def open(self): # @ReservedAssignment
"""
Open port on host side.
"""
if self.is_open():
return
attempt = 11
while attempt > 0:
try:
if self.port_type == 'unix_socket':
sock_flag = socket.AF_UNIX
elif self.port_type in ('tcp_socket', 'udp'):
sock_flag = socket.AF_INET
if self.port_type == 'udp':
sock_type = socket.SOCK_DGRAM
elif self.port_type in ('tcp_socket', 'unix_socket'):
sock_type = socket.SOCK_STREAM
self.sock = socket.socket(sock_flag, sock_type)
self.sock.settimeout(1)
self.sock.connect(self.hostfile)
self.sock.setsockopt(1, socket.SO_SNDBUF, SOCKET_SIZE)
self.sock.settimeout(None)
self.port_was_opened = True
return
except Exception:
attempt -= 1
time.sleep(1)
raise exceptions.TestFail("Can't open the %s sock (%s)" % (self.name,
self.hostfile))
示例10: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def __init__(self, type = ETH_P_ALL, filter=None, promisc=None, iface=None, nofilter=0):
self.type = type
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 0)
_flush_fd(self.ins)
if iface:
self.ins.bind((iface, type))
if not nofilter:
if conf.except_filter:
if filter:
filter = "(%s) and not (%s)" % (filter, conf.except_filter)
else:
filter = "not (%s)" % conf.except_filter
if filter is not None:
attach_filter(self.ins, filter)
self.ins.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 2**30)
self.outs = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
self.outs.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
if promisc is None:
promisc = conf.promisc
self.promisc = promisc
if self.promisc:
if iface is None:
self.iff = get_if_list()
else:
if iface.__class__ is list:
self.iff = iface
else:
self.iff = [iface]
for i in self.iff:
set_promisc(self.ins, i)
示例11: set_bufsizes
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def set_bufsizes(sock, recv_buf, send_buf):
try_setsockopt(sock, socket.SOL_SOCKET, socket.SO_RCVBUF, recv_buf)
try_setsockopt(sock, socket.SOL_SOCKET, socket.SO_SNDBUF, send_buf)
示例12: _create_remote_socket
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def _create_remote_socket(self, ip, port):
if self._remote_udp:
addrs_v6 = socket.getaddrinfo("::", 0, 0, socket.SOCK_DGRAM, socket.SOL_UDP)
addrs = socket.getaddrinfo("0.0.0.0", 0, 0, socket.SOCK_DGRAM, socket.SOL_UDP)
else:
addrs = socket.getaddrinfo(ip, port, 0, socket.SOCK_STREAM, socket.SOL_TCP)
if len(addrs) == 0:
raise Exception("getaddrinfo failed for %s:%d" % (ip, port))
af, socktype, proto, canonname, sa = addrs[0]
if self._forbidden_iplist:
if common.to_str(sa[0]) in self._forbidden_iplist:
raise Exception('IP %s is in forbidden list, reject' %
common.to_str(sa[0]))
remote_sock = socket.socket(af, socktype, proto)
self._remote_sock = remote_sock
self._fd_to_handlers[remote_sock.fileno()] = self
if self._remote_udp:
af, socktype, proto, canonname, sa = addrs_v6[0]
remote_sock_v6 = socket.socket(af, socktype, proto)
self._remote_sock_v6 = remote_sock_v6
self._fd_to_handlers[remote_sock_v6.fileno()] = self
remote_sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024 * 32)
remote_sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024 * 32)
remote_sock_v6.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024 * 32)
remote_sock_v6.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024 * 32)
remote_sock.setblocking(False)
if self._remote_udp:
remote_sock_v6.setblocking(False)
else:
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1)
return remote_sock
示例13: testSocketBufferSize
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def testSocketBufferSize(self):
bufsize = 16384
with socket.socket(socket.PF_RDS, socket.SOCK_SEQPACKET, 0) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, bufsize)
s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, bufsize)
示例14: bind
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def bind(self):
self.__socket = socket.socket(self.__hostAddrType, socket.SOCK_STREAM)
self.__socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, self.__sendBufferSize)
self.__socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, self.__recvBufferSize)
self.__socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
self.__socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.__socket.setblocking(0)
self.__socket.bind((self.__host, self.__port))
self.__socket.listen(5)
self.__fileno = self.__socket.fileno()
self.__poller.subscribe(self.__fileno,
self.__onNewConnection,
POLL_EVENT_TYPE.READ | POLL_EVENT_TYPE.ERROR)
self.__state = SERVER_STATE.BINDED
示例15: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import SO_SNDBUF [as 別名]
def __init__(self, sock=None, sockMap=None):
asyncore.dispatcher.__init__(self)
if sock is None:
if self.sockFamily is None:
raise error.CarrierError(
'Address family %s not supported' % self.__class__.__name__
)
if self.sockType is None:
raise error.CarrierError(
'Socket type %s not supported' % self.__class__.__name__
)
try:
sock = socket.socket(self.sockFamily, self.sockType)
except socket.error:
raise error.CarrierError('socket() failed: %s' % sys.exc_info()[1])
try:
for b in socket.SO_RCVBUF, socket.SO_SNDBUF:
bsize = sock.getsockopt(socket.SOL_SOCKET, b)
if bsize < self.bufferSize:
sock.setsockopt(socket.SOL_SOCKET, b, self.bufferSize)
debug.logger & debug.flagIO and debug.logger('%s: socket %d buffer size increased from %d to %d for buffer %d' % (self.__class__.__name__, sock.fileno(), bsize, self.bufferSize, b))
except Exception:
debug.logger & debug.flagIO and debug.logger('%s: socket buffer size option mangling failure for buffer %d: %s' % (self.__class__.__name__, b, sys.exc_info()[1]))
# The socket map is managed by the AsyncoreDispatcher on
# which this transport is registered. Here we just prepare
# socket and postpone transport registration at dispatcher
# till AsyncoreDispatcher invokes registerSocket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setblocking(0)
self.set_socket(sock)