code: def open(self):
          
          # restart TCP if already open
          if self.is_open():
              self.close()
          # init socket and connect
          # list available sockets on the target host/port
          # AF_xxx : AF_INET -> IPv4, AF_INET6 -> IPv6,
          #          AF_UNSPEC -> IPv6 (priority on some system) or 4
          # list available socket on target host
          for res in socket.getaddrinfo(self.__hostname, self.__port,
                                        socket.AF_UNSPEC, socket.SOCK_STREAM):
              af, sock_type, proto, canon_name, sa = res
              try:
                  self.__sock = socket.socket(af, sock_type, proto)
              except socket.error:
                  self.__sock = None
                  continue
              try:
                  self.__sock.settimeout(self.__timeout)
                  self.__sock.connect(sa)
              except socket.error:
                  self.__sock.close()
                  self.__sock = None
                  continue
              break
          # check connect status
          if self.__sock is not None:
              return True
          else:
              self.__last_error = const.MB_CONNECT_ERR
              self.__debug_msg('connect error')
              return False
docs: Connect to modbus server (open TCP connection)
  
          :returns: connect status (True if open)
          :rtype: bool