Beispiel #1
0
int			Network::connectSocket(std::string host, std::string port)
{
  struct protoent       *pe;
  ClientInfo		*stranger = new ClientInfo(_len);

  if (!stranger)
    return (0);
  if (!(pe = getprotobyname("TCP")))
    return (0);
  stranger->setAddr(_family, port.c_str(), host.c_str()); //prépare la connexion tcp vers un serveur
  if ((stranger->get_socket() = socket(_family, SOCK_STREAM, pe->p_proto)) == -1)
    return (0);
  if (connect(stranger->get_socket(), (saddr *)(&stranger->get_info()), sizeof(saddrin)) < 0)
  {
    close(stranger->get_socket());
    delete stranger;
    return (0);
  }
  new_connected(++_id, stranger);
  _change = true;
  return (_id);
}
Beispiel #2
0
int			Network::acceptSocket(void)
{
  socklen_t		socklen;
  ClientInfo		*stranger = new ClientInfo(_len);

  if (!stranger)
    return (0);
  socklen = sizeof(saddrin);
  if ((stranger->get_socket() = accept(get_connected(0)->get_socket(), (saddr *)&(stranger->get_info()), &socklen)) < 0)
  {
    delete stranger;
    return (0);
  }
  new_connected(++_id, stranger);
  _change = true;
  return (_id);
}
Beispiel #3
0
bool			Network::createSocket(std::string proto, int &type)
{
  struct protoent       *pe;
  ClientInfo		*current;

  if (_connected.find(0) != _connected.end())
    return (false);
  if (!(current = (new ClientInfo(_len))))
    return (false);
  if (!(pe = getprotobyname(proto.c_str())))
    return (false);
  if ((current->get_socket() = socket(_family, type, pe->p_proto)) == -1)
    {
      delete current;
      return (false);
    }
  _connected[++_id] = current; //stockage de la socket
  return (true);
}