code: public function clientConnection($host, $port, $call)
      {
          $size = $this->size;
          $send = $this->serializer->serialize($call);
          $sock = $this->connect($host, $port);
  
          if ($sock === false) {
              throw new NetworkErrorException("Cannot open socket");
          }
  
          ErrorHandler::start();
          $puts = fwrite($sock, $send);
          $error = ErrorHandler::stop();
  
          if ($puts === false) {
              throw new NetworkErrorException("Cannot write to socket", 0, $error);
          }
  
          ErrorHandler::start();
          $read = fread($sock, $size);
          $error = ErrorHandler::stop();
  
          if ($read === false) {
              throw new NetworkErrorException("Cannot read from socket", 0, $error);
          }
  
          if (!$this->reuseConnection) {
              ErrorHandler::start();
              fclose($sock);
              ErrorHandler::stop();
          }
  
          return $read;
      }
docs: @param $host
  @param $port
  @param $call
  
  @return string
  @throws Exception\NetworkErrorException