Ejemplo n.º 1
0
int main(int argc, char* argv[])
{
  // 1 初始化Socket库
	WSADATA wsa={0};
	WSAStartup(MAKEWORD(2,2),&wsa);
  // 2 使用(具体的通信)
  //TCPServer(); 
	UDPServer();
  // 3 卸载Socket库
	WSACleanup();
	return 0;
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
  int nRet = 0;
  int nPortUDP = 1234;
  int nPortTCP = 9878;
  int i_PktNumb; 
  struct Ctl_Pkt control_pkt;
  int c;

  //use getopt to parse the command line
  while ((c = getopt(argc, argv, "p:")) != EOF)
    {
      switch (c)
        {
        case 'p':
          printf("udp portnumber: %d\n", atoi(optarg));
          nPortUDP = atoi(optarg);
          break;

        case '?':
          printf("ERROR: illegal option %s\n", argv[optind-1]);
          printf("Usage:\n");
          printf("\t%s -p udp_portnumber\n", argv[0]);
          exit(1);
          break;

        default:
          printf("WARNING: no handler for option %c\n", c);
          printf("Usage:\n");
          printf("\t%s -p udp_portnumber\n", argv[0]);
          exit(1);
          break;
        }
    }
  

  signal(SIGINT, CleanUp);

  UDPServer(nPortUDP);
  TCPServer(nPortTCP);

  while(1) 
    {
      nRet = recv(tcpSocket, (char *) &control_pkt, sizeof(control_pkt), 0);
      if (nRet <= 0 ) // peer closed
	{
	  break;
	}
      
      // what does the client want to do? PP/PT?
      if (nRet!=sizeof(control_pkt) || (control_pkt.option != PacketPair && control_pkt.option!=PacketTrain)) 
	{
	  printf("Receive unknow message %d, with size %d\n", control_pkt.option, nRet);
	  exit(1);
	}

      i_PktNumb = control_pkt.value;
  
      switch (control_pkt.option) 
	{
	case PacketPair:
	  control_pkt.option = Ready;
	  if (send(tcpSocket, (char *) &control_pkt, sizeof(control_pkt), 0) != sizeof(control_pkt))
	    {
	      perror("Send TCP control packet error");
	      exit(1);
	    }
	  // receive PP
	  UDPReceive(PacketPair, i_PktNumb); 

	  control_pkt.option = PacketPair;
	  allCE = ProcessPP(i_PktNumb); 
	  control_pkt.value = (unsigned int) (allCE * 1000000);

	  if (send(tcpSocket, (char *) &control_pkt, sizeof(control_pkt), 0) != sizeof(control_pkt))
	    {
	      perror("Send TCP control packet error");
	      exit(1);
	    }
	  break;

	case PacketTrain:
	  control_pkt.option = Ready;
	  if (send(tcpSocket, (char *) &control_pkt, sizeof(control_pkt), 0) != sizeof(control_pkt))
	    {
	      perror("Send TCP control packet error");
	      exit(1);
	    }

	  // receive PT
	  UDPReceive(PacketTrain, i_PktNumb);  

	  control_pkt.option = PacketTrain;
	  allAB = ProcessPT(i_PktNumb);
      
	  control_pkt.value = (unsigned int)(allAB * 1000000);

	  if (send(tcpSocket, (char *) &control_pkt, sizeof(control_pkt), 0) != sizeof(control_pkt))
	    {
	      perror("Send TCP control packet error");
	      exit(1);
	    }
	  break;

	default:
	  break;
	}
    } //end while(1)

  CleanUp (0);
  return 0;
} // end main()