netstream.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:5In1RowService 作者: caiwb 项目源码 文件源码
def connect(self, address, port, head = -1, block = False, timeout = 0):
        self.close()
        self.block = block
        af = socket.AF_INET
        if ':' in address:
            if not 'AF_INET6' in socket.__dict__:
                return -1
            if not socket.has_ipv6:
                return -2
            af = socket.AF_INET6
            self.ipv6 = True
        self.sock = socket.socket(af, socket.SOCK_STREAM)
        to = self.sock.gettimeout()
        if not self.block:
            self.sock.setblocking(0)
        elif timeout > 0:
            self.sock.settimeout(timeout)
        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
        self.state = NET_STATE_CONNECTING
        try:
            hr = self.sock.connect_ex((address, port))
        except socket.error, e:
            if self.block:
                self.close()
                return -3
        if self.block and hr != 0:
            return -4
        if self.block and timeout > 0:
            self.sock.settimeout(to)
        self.send_buf = ''
        self.recv_buf = ''
        self.errc = 0
        if head >= 0 and head <= 14:
            self.__head_init(head)
        if self.block:
            self.state = NET_STATE_ESTABLISHED
        return 0

    # close connection
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号