예제 #1
0
teTCPError TCPServerConnection::listen ( unsigned short port, unsigned int connections )
{
  disconnect();

  if ( port == 0)
    return setError(eTCPBadPort);

  maxUsers = connections;
  serverIP.host = INADDR_ANY;
  serverIP.port = port;

  socket = net_TCP_Open(&serverIP);
  if ( socket == NULL )
    return setError(eTCPConnectionFailed);

  socketSet = net_AllocSocketSet(getMaxConnections()+1);
  if (!socketSet)
    return setError(eTCPSocketNFG);

  IPaddress serverIP;
  net_ResolveHost(&serverIP, NULL, getPort());
  socket = net_TCP_Open(&serverIP);
  net_TCP_AddSocket(socketSet,socket);

  return setError(eTCPNoError);
}
예제 #2
0
 void checkTicketNumbers() {
     int want = getMaxConnections();
     int current = connTicketHolder.outof();
     if ( current != DEFAULT_MAX_CONN ) {
         if ( current < want ) {
             // they want fewer than they can handle
             // which is fine
             log(1) << " only allowing " << current << " connections" << endl;
             return;
         }
         if ( current > want ) {
             log() << " --maxConns too high, can only handle " << want << endl;
         }
     }
     connTicketHolder.resize( want );
 }