509 | | int32_t AcceptTCPConnection(int32_t servSock) |
510 | | { |
511 | | int32_t clntSock; /* Socket descriptor for client */ |
512 | | struct sockaddr_in echoClntAddr; |
513 | | uint32_t clntLen; |
514 | | |
515 | | /* Set the size of the in-out parameter */ |
516 | | clntLen = sizeof(echoClntAddr); |
517 | | |
518 | | /* Wait for a client to connect */ |
519 | | //if ((clntSock = accept(servSock, (struct sockaddr *) &echoClntAddr, &clntLen)) < 0) { |
520 | | if ((clntSock = accept(servSock, NULL, NULL)) < 0) { |
521 | | return -1; |
522 | | } |
523 | | |
524 | | /* clntSock is connected to a client! */ |
525 | | |
526 | | printf("Handling client %s\n", inet_ntoa(echoClntAddr.sin_addr)); |
527 | | |
528 | | return clntSock; |
529 | | } |
530 | | |
531 | | int32_t CreateTCPServerSocket(unsigned short port) |
532 | | { |
533 | | int32_t sock; /* socket to create */ |
534 | | struct sockaddr_in echoServAddr; /* Local address */ |
535 | | |
536 | | /* Create socket for incoming connections */ |
537 | | if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) |
538 | | ERROR(1, "socket() failed\n"); |
539 | | |
540 | | /* Construct local address structure */ |
541 | | memset(&echoServAddr, 0, sizeof(echoServAddr)); /* Zero out structure */ |
542 | | echoServAddr.sin_family = AF_INET; /* int32_ternet address family */ |
543 | | echoServAddr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming int32_terface */ |
544 | | echoServAddr.sin_port = htons(port); /* Local port */ |
545 | | |
546 | | /* Bind to the local address */ |
547 | | if (bind(sock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0) |
548 | | ERROR(1, "bind() failed\n"); |
549 | | |
550 | | /* Mark the socket so it will listen for incoming connections */ |
551 | | if (listen(sock, 5) < 0) { |
552 | | printf("listen() failed\n"); |
553 | | return 0; |
554 | | } |
555 | | |
556 | | return sock; |
557 | | } |
558 | | |
559 | | void HandleTCPClient(int32_t socketfd, Utility * uList[], Parameter * pList[], Observable * oList[], CE_Info * ce_info) |
560 | | { |
561 | | char buffer[256]; /* Buffer for echo string */ |
562 | | |
563 | | /* Receive message from client */ |
564 | | bzero(buffer,256); |
565 | | ReadMessage(socketfd,buffer); |
566 | | |
567 | | printf("Cognitive Radio:: Message Received - %s.\n\n", buffer); |
568 | | |
569 | | if(strcmp(buffer,"c_register") == 0) |
570 | | InitializeCE(socketfd, uList, pList, oList, ce_info); |
571 | | |
572 | | if(strcmp(buffer,"p_register") == 0) |
573 | | InitializePE(socketfd, ce_info); |
574 | | |
575 | | if(strcmp(buffer,"optimize") == 0) |
576 | | RunSimulator(socketfd, uList, pList, oList, ce_info); |
577 | | |
578 | | //close(socketfd); /* Close client socket */ |
579 | | } |
580 | | |
581 | | int32_t StartServers(Utility * uList[], Parameter * pList[], Observable * oList[], CE_Info * ce_info) { |
| 501 | |
| 502 | int32_t |
| 503 | StartServers(Utility* uList[], Parameter* pList[], Observable* oList[], \ |
| 504 | CE_Info* ce_info) |
| 505 | { |