int main(int argc, char* argv[]) { // 1 初始化Socket库 WSADATA wsa={0}; WSAStartup(MAKEWORD(2,2),&wsa); // 2 使用(具体的通信) //TCPServer(); UDPServer(); // 3 卸载Socket库 WSACleanup(); return 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()