本文整理汇总了Python中errno.EISCONN属性的典型用法代码示例。如果您正苦于以下问题:Python errno.EISCONN属性的具体用法?Python errno.EISCONN怎么用?Python errno.EISCONN使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类errno
的用法示例。
在下文中一共展示了errno.EISCONN属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def _connect(self, sock, sa):
while not self._canceled and not ABORT_FLAG_FUNCTION():
time.sleep(0.01)
self._check_timeout() # this should be done at the beginning of each loop
status = sock.connect_ex(sa)
if not status or status in (errno.EISCONN, WIN_EISCONN):
break
elif status in (errno.EINPROGRESS, WIN_EWOULDBLOCK):
self.deadline = time.time() + self._timeout.getConnectTimeout()
# elif status in (errno.EWOULDBLOCK, errno.EALREADY) or (os.name == 'nt' and status == errno.WSAEINVAL):
# pass
yield
if self._canceled or ABORT_FLAG_FUNCTION():
raise CanceledException('Request canceled')
error = sock.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
if error:
# TODO: determine when this case can actually happen
raise socket.error((error,))
示例2: __init__
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def __init__ (self):
self.sock = None # socket object
self.send_buf = [] # send buffer
self.recv_buf = [] # recv buffer
self.pend_buf = '' # send pending
self.state = NET_STATE_CLOSED
self.errd = [ errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK ]
self.conn = ( errno.EISCONN, 10057, 10053 )
self.errc = 0
self.ipv6 = False
self.eintr = ()
if 'EINTR' in errno.__dict__:
self.eintr = (errno.__dict__['EINTR'],)
if 'WSAEWOULDBLOCK' in errno.__dict__:
self.errd.append(errno.WSAEWOULDBLOCK)
self.errd = tuple(self.errd)
self.timeout = 0
self.timecon = 0
示例3: connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect(self, address):
"""
Try to make an actual connection.
:return: True if connected
"""
sock = self._connectors[address]
err = sock.connect()
self.poller.register(sock)
self._sock_by_fd[sock.fileno()] = sock
self._socks_waiting_to_connect.add(sock)
if err in (0, errno.EISCONN):
self.handle_connect(sock)
return True
elif err in (errno.ECONNREFUSED, errno.ENETUNREACH):
self.handle_conn_refused(sock)
elif err not in (errno.EINPROGRESS, errno.EWOULDBLOCK):
raise socket.error(err, errno.errorcode[err])
return False
##########################################################
示例4: connect_ex
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect_ex(self, addr):
"""Connects to remote ADDR, and then wraps the connection in
an SSL channel."""
if self.server_side:
raise ValueError("can't connect in server-side mode")
if self._connected:
raise ValueError("attempt to connect already-connected SSLSocket!")
log.debug("Connect SSL with handshaking %s", self.do_handshake_on_connect, extra={"sock": self._sock})
rc = self._sock.connect_ex(addr)
if rc == errno.EISCONN:
self._connected = True
if self.do_handshake_on_connect:
self.do_handshake()
return rc
示例5: test_timeout_connect_ex
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def test_timeout_connect_ex(self):
# Issue #12065: on a timeout, connect_ex() should return the original
# errno (mimicking the behaviour of non-SSL sockets).
with support.transient_internet(REMOTE_HOST):
s = ssl.wrap_socket(socket.socket(socket.AF_INET),
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=REMOTE_ROOT_CERT,
do_handshake_on_connect=False)
try:
s.settimeout(0.0000001)
rc = s.connect_ex((REMOTE_HOST, 443))
if rc == errno.EISCONN:
self.skipTest("REMOTE_HOST responded too quickly")
self.assertIn(rc, (errno.ETIMEDOUT, errno.EAGAIN, errno.EWOULDBLOCK))
finally:
s.close()
示例6: connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect(self, address, _hostname_hint=None):
"""connect(address)
Connect the socket to a remote address. For IP sockets, the address
is a pair (host, port).
"""
if not self._created:
if self.gettimeout() is None:
self._CreateSocket(address=address,
address_hostname_hint=_hostname_hint)
return
else:
self._CreateSocket()
if not self._socket_descriptor:
raise error(errno.EBADF, os.strerror(errno.EBADF))
if self._connected:
raise error(errno.EISCONN, os.strerror(errno.EISCONN))
request = remote_socket_service_pb.ConnectRequest()
request.set_socket_descriptor(self._socket_descriptor)
self._SetProtoFromAddr(request.mutable_remote_ip(), address, _hostname_hint)
if self.gettimeout() is not None:
request.set_timeout_seconds(self.gettimeout())
reply = remote_socket_service_pb.ConnectReply()
try:
apiproxy_stub_map.MakeSyncCall('remote_socket', 'Connect', request, reply)
except apiproxy_errors.ApplicationError, e:
translated_e = _SystemExceptionFromAppError(e)
if translated_e.errno == errno.EISCONN:
self._bound = True
self._connected = True
elif translated_e.errno == errno.EINPROGRESS:
self._connect_in_progress = True
raise translated_e
示例7: connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect(self, *addr):
timeout = self.timeout
sock = self.sock
try:
# Non-blocking mode
sock.setblocking(0)
apply(sock.connect, addr)
sock.setblocking(timeout != 0)
return 1
except socket.error,why:
if not timeout:
raise
sock.setblocking(1)
if len(why.args) == 1:
code = 0
else:
code, why = why
if code not in (
errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK
):
raise
r,w,e = select.select([],[sock],[],timeout)
if w:
try:
apply(sock.connect, addr)
return 1
except socket.error,why:
if len(why.args) == 1:
code = 0
else:
code, why = why
if code in (errno.EISCONN, WSAEINVAL):
return 1
raise
示例8: connect_ex
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect_ex(self, addr):
"This signifies a client socket"
if not self.sock_impl:
self._do_connect(addr)
if self.sock_impl.finish_connect():
self._setup()
if self.mode == MODE_NONBLOCKING:
return errno.EISCONN
return 0
return errno.EINPROGRESS
示例9: start_connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def start_connect(self):
result = self.socket.connect_ex(SERVER_ADDRESS)
if result == errno.EISCONN:
self.connected = 1
else:
assert result == errno.EINPROGRESS
示例10: connect_ex
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect_ex(self, addr):
was_connecting = self.connected # actually means self.connecting if
# not blocking
if not self.connected:
try:
self.connect(addr)
except error as e:
return e.errno
if not self.connect_future.isDone():
if was_connecting:
try:
# Timing is based on CPython and was empirically
# guesstimated. Of course this means user code is
# polling, so the the best we can do is wait like
# this in supposedly nonblocking mode without
# completely busy waiting!
self.connect_future.get(1500, TimeUnit.MICROSECONDS)
except ExecutionException:
# generally raised if closed; pick up the state
# when testing for success
pass
except TimeoutException:
# more than 1.5ms, will report EALREADY below
pass
if not self.connect_future.isDone():
if was_connecting:
return errno.EALREADY
else:
return errno.EINPROGRESS
elif self.connect_future.isSuccess():
# from socketmodule.c
# if (res == EISCONN)
# res = 0;
# but http://bugs.jython.org/issue2428
return errno.EISCONN
else:
return errno.ENOTCONN
# SERVER METHODS
# Calling listen means this is a server socket
示例11: start_connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def start_connect(self):
result = self.socket.connect_ex(self.server_addr)
if result == errno.EISCONN:
self.connected = True
else:
assert result in [errno.EINPROGRESS, errno.ENOTCONN], \
"connect_ex returned %s (%s)" % (result, errno.errorcode.get(result, "Unknown errno"))
示例12: do_nonblocking_connection
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def do_nonblocking_connection(self, results, index):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setblocking(0)
connect_errno = 0
connect_attempt = 0
while connect_errno != errno.EISCONN and connect_attempt < 10000:
connect_attempt += 1
connect_errno = sock.connect_ex(self.address)
results[index].append(connect_errno)
time.sleep(0.01)
sock.close()
示例13: test_connect_ex_workout
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def test_connect_ex_workout(self):
"""Verify connect_ex states go through EINPROGRESS?, EALREADY*, EISCONN"""
# Tests fix for http://bugs.jython.org/issue2428; based in part on the
# code showing failure that was submitted with that bug
for result in self.do_workout():
self.assertIn(result[0], {errno.EINPROGRESS, errno.EISCONN})
self.assertEqual(result[-1], errno.EISCONN)
for code in result[1:-1]:
self.assertEqual(code, errno.EALREADY)
示例14: connect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def connect(self, dest):
with self.lock:
if not self.state.CLOSED:
self.err("connect() in socket state {0}".format(self.state))
if self.state.ESTABLISHED:
raise err.Error(errno.EISCONN)
if self.state.CONNECT:
raise err.Error(errno.EALREADY)
raise err.Error(errno.EPIPE)
if isinstance(dest, (bytes, bytearray)):
send_pdu = pdu.Connect(1, self.addr, self.recv_miu,
self.recv_win, bytes(dest))
elif isinstance(dest, str):
send_pdu = pdu.Connect(1, self.addr, self.recv_miu,
self.recv_win, dest.encode('latin'))
elif isinstance(dest, int):
send_pdu = pdu.Connect(dest, self.addr, self.recv_miu,
self.recv_win)
else:
raise TypeError("connect destination must be int or bytes")
self.state.CONNECT = True
self.send_queue.append(send_pdu)
try:
rcvd_pdu = super(DataLinkConnection, self).recv()
except IndexError:
raise err.Error(errno.EPIPE)
if rcvd_pdu.name == "DM":
logstr = "connect rejected with reason {}"
self.log(logstr.format(rcvd_pdu.reason))
self.state.CLOSED = True
raise err.ConnectRefused(rcvd_pdu.reason)
elif rcvd_pdu.name == "CC":
self.peer = rcvd_pdu.ssap
self.recv_buf = self.recv_win
self.send_miu = rcvd_pdu.miu
self.send_win = rcvd_pdu.rw
self.state.ESTABLISHED = True
return
else: # pragma: no cover
raise RuntimeError("CC or DM expected, not " + rcvd_pdu.name)
示例15: doConnect
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EISCONN [as 别名]
def doConnect(self):
"""
Initiate the outgoing connection attempt.
@note: Applications do not need to call this method; it will be invoked
internally as part of L{IReactorTCP.connectTCP}.
"""
self.doWrite = self.doConnect
self.doRead = self.doConnect
if not hasattr(self, "connector"):
# this happens when connection failed but doConnect
# was scheduled via a callLater in self._finishInit
return
err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
if err:
self.failIfNotConnected(error.getConnectError((err, strerror(err))))
return
# doConnect gets called twice. The first time we actually need to
# start the connection attempt. The second time we don't really
# want to (SO_ERROR above will have taken care of any errors, and if
# it reported none, the mere fact that doConnect was called again is
# sufficient to indicate that the connection has succeeded), but it
# is not /particularly/ detrimental to do so. This should get
# cleaned up some day, though.
try:
connectResult = self.socket.connect_ex(self.realAddress)
except socket.error as se:
connectResult = se.args[0]
if connectResult:
if connectResult == EISCONN:
pass
# on Windows EINVAL means sometimes that we should keep trying:
# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/connect_2.asp
elif ((connectResult in (EWOULDBLOCK, EINPROGRESS, EALREADY)) or
(connectResult == EINVAL and platformType == "win32")):
self.startReading()
self.startWriting()
return
else:
self.failIfNotConnected(error.getConnectError((connectResult, strerror(connectResult))))
return
# If I have reached this point without raising or returning, that means
# that the socket is connected.
del self.doWrite
del self.doRead
# we first stop and then start, to reset any references to the old doRead
self.stopReading()
self.stopWriting()
self._connectDone()