Exemplo n.º 1
0
void Client::Logic()
{
  clock_t time = clock();
  clock_t actime = time;

  SOCKET bsock;

  SocketBase bcomm;
  sockaddr_in &bsin = bcomm.Connect( PORT_BROADCAST );
  bsock = bcomm.CreateSocket();
  bcomm.Bind();
  bcomm.SetBroadcast( true );

  int keysize = int( key.size() + 1 );
  int portsize = sizeof port;

  char *message = new char[ keysize + portsize ];

  //memcpy( message, this.key.c_str(), keysize );
  //memcpy( message + keysize, &this.port, portsize );

  while ( running )
  {
    LONGLONG flowend = Clock() - flowstart;
    if ( flowend >  1000000LL )
    {
      flowstart = Clock();
      currentdatasent = 0;
      float l = GetRTT();
      if ( l < 0.0001f )
        BandWidth += 512;
      else if ( l > 0.001f )
        BandWidth -= 512;
    }

    if ( !ServerFound )
    {
      FindServer( bsock, message, portsize, keysize );
    }

    SendPackets();

    ReceivePackets();

    HandlePackets();

    UpdateRTT();

    Sleep( 10 );
  }
}
Exemplo n.º 2
0
int
UwCbrModule::command(int argc, const char *const *argv)
{
	Tcl &tcl = Tcl::instance();
	if (argc == 2) {
		if (strcasecmp(argv[1], "start") == 0) {
			start();
			return TCL_OK;
		} else if (strcasecmp(argv[1], "stop") == 0) {
			stop();
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getrtt") == 0) {
			tcl.resultf("%f", GetRTT());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getftt") == 0) {
			tcl.resultf("%f", GetFTT());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getper") == 0) {
			tcl.resultf("%f", GetPER());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getthr") == 0) {
			tcl.resultf("%f", GetTHR());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getcbrheadersize") == 0) {
			tcl.resultf("%d", this->getCbrHeaderSize());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getrttstd") == 0) {
			tcl.resultf("%f", GetRTTstd());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getfttstd") == 0) {
			tcl.resultf("%f", GetFTTstd());
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getsentpkts") == 0) {
			tcl.resultf("%d", txsn - 1);
			return TCL_OK;
		} else if (strcasecmp(argv[1], "getrecvpkts") == 0) {
			tcl.resultf("%d", pkts_recv);
			return TCL_OK;
		} else if (strcasecmp(argv[1], "setprioritylow") == 0) {
			priority_ = 0;
			return TCL_OK;
		} else if (strcasecmp(argv[1], "setpriorityhigh") == 0) {
			priority_ = 1;
			return TCL_OK;
		} else if (strcasecmp(argv[1], "sendPkt") == 0) {
			this->sendPkt();
			return TCL_OK;
		} else if (strcasecmp(argv[1], "sendPktLowPriority") == 0) {
			this->sendPktLowPriority();
			return TCL_OK;
		} else if (strcasecmp(argv[1], "sendPktHighPriority") == 0) {
			this->sendPktHighPriority();
			return TCL_OK;
		} else if (strcasecmp(argv[1], "resetStats") == 0) {
			resetStats();
			fprintf(stderr,
					"CbrModule::command() resetStats %s, pkts_last_reset=%d, "
					"hrsn=%d, txsn=%d\n",
					tag_,
					pkts_last_reset,
					hrsn,
					txsn);
			return TCL_OK;
		} else if (strcasecmp(argv[1], "printidspkts") == 0) {
			this->printIdsPkts();
			return TCL_OK;
		}
	}
	return Module::command(argc, argv);
}