Changeset 70 for vtcross

Show
Ignore:
Timestamp:
11/22/08 09:47:20 (16 years ago)
Author:
trnewman
Message:

Fixed send and recv problems whrn trying to send multiple consecutive msgs. PEEEK

Location:
vtcross/branches/trnewman/CR_shell/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • vtcross/branches/trnewman/CR_shell/src/main_cognitive_engine.cpp

    r69 r70  
    5656} 
    5757 
     58void ReadMessage(int socket,char * buffer) { 
     59    int i,n; 
     60 
     61    n = recv(socket,buffer,256,MSG_PEEK); 
     62    for(i=0;i<256;i++){ 
     63        if(strcmp(&buffer[i],"\0") == 0) break; 
     64    } 
     65    n = recv(socket,buffer,i+1,0); 
     66    if (n < 0)  
     67         error("ERROR reading from socket"); 
     68    //printf("ReadMessage:%s %d\n",buffer,n); 
     69} 
     70 
    5871// main client socket 
    5972int main(int argc, char *argv[]) 
     
    6578    // create a socket 
    6679    char buffer[256]; 
     80    char buffer1[256]; 
    6781    if (argc < 3) { 
    6882       fprintf(stderr,"usage %s hostname port\n", argv[0]); 
     
    87101    if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)  
    88102        error("ERROR connecting"); 
    89     /*if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)  
    90         error("ERROR connecting");*/ 
    91103     
    92     /*// send to server 
    93     printf("Please enter the message: "); 
    94     bzero(buffer,256); 
    95     fgets(buffer,255,stdin); 
    96     n = send(sockfd,buffer,strlen(buffer),MSG_NOSIGNAL); 
    97     if (n < 0)  
    98          error("ERROR writing to socket"); 
    99     bzero(buffer,256);*/ 
    100      
    101     // read back xml information 
    102104    int i; 
    103     Utility * uList[10]; 
    104     Parameter * pList[10]; 
    105     Observable * oList[10]; 
    106     CE_Info *ce_info; 
     105    Utility uList[10]; 
     106    Parameter pList[10]; 
     107    Observable oList[10]; 
     108    CE_Info ce_info; 
    107109 
    108110    // read unitilities 
    109111    // numUtilities 
    110112    bzero(buffer,256); 
    111     n = recv(sockfd,buffer,255,0); 
    112     if (n < 0)  
    113          error("ERROR reading from socket"); 
    114     printf("%s\n",buffer); 
    115     ce_info->numUtilities = atoi(buffer); 
    116     printf("number of utilities: %d\n", ce_info->numUtilities); 
     113    ReadMessage(sockfd,buffer); 
     114    ce_info.numUtilities = atoi(buffer); 
     115    printf("number of utilities: %d\n", ce_info.numUtilities); 
    117116         
    118     /*bzero(buffer,256); 
    119     n = recv(sockfd,buffer,255,0); 
    120     printf("%s ", buffer);*/ 
    121      
    122     //for (i = 0; i < ce_info->numUtilities; i++){ 
    123     for (i = 0; i < 1; i++){ 
     117    for (i = 0; i < ce_info.numUtilities; i++){ 
    124118        bzero(buffer,256); 
    125         n = recv(sockfd,buffer,255,0); 
    126         if (n < 0)  
    127             error("ERROR reading from socket"); 
    128         printf("%s ", buffer); 
    129         strcpy(uList[i]->name, buffer); 
     119        ReadMessage(sockfd,buffer); 
     120        printf("Name: %s\n", buffer); 
     121        strcpy(uList[i].name, buffer); 
    130122                  
    131123        bzero(buffer,256); 
    132         n = recv(sockfd,buffer,255,0); 
    133         if (n < 0) 
    134             error("ERROR reading from socket"); 
    135         printf("%s ", buffer); 
    136         strcpy(uList[i]->units, buffer); 
     124        ReadMessage(sockfd,buffer); 
     125        printf("Units: %s\n", buffer); 
     126        strcpy(uList[i].units, buffer); 
    137127 
    138         /*bzero(buffer,256); 
    139         n = recv(sockfd,buffer,255,0); 
    140         if (n < 0) 
    141             error("ERROR reading from socket"); 
    142         printf("%s ", buffer); 
    143         strcpy(uList[i]->goal, buffer);*/ 
     128        bzero(buffer,256); 
     129        ReadMessage(sockfd,buffer); 
     130        printf("Goal: %s\n", buffer); 
     131        strcpy(uList[i].goal, buffer); 
    144132         
    145         /*bzero(buffer,256); 
    146         n = recv(sockfd,buffer,255,0); 
    147         if (n < 0) 
    148             error("ERROR reading from socket"); 
    149         printf("%s ", buffer); 
    150         uList[i]->target, atof(buffer);*/ 
     133        bzero(buffer,256); 
     134        ReadMessage(sockfd,buffer); 
     135        printf("Target: %s\n", buffer); 
     136        uList[i].target = atof(buffer); 
    151137    } 
    152138 
  • vtcross/branches/trnewman/CR_shell/src/main_cognitive_radio.cpp

    r69 r70  
    237237        int n; 
    238238 
     239        message.append("\0000");         
    239240        // Write message back to client 
    240     n = send(socketfd,message.c_str(),(message.size()+1),MSG_NOSIGNAL); 
    241     if (n<0) 
    242         error("Error sending to client\n"); 
    243     printf("sent: %s\n", message.c_str()); 
    244          
    245     return n; 
     241        n = write(socketfd,message.c_str(),(message.size()+1)); 
     242        if (n<0) 
     243                error("Error sending to client\n"); 
     244        printf("sent: %s %i\n", message.c_str(),n); 
     245         
     246        return n; 
    246247} 
    247248 
     
    396397        } else { 
    397398                // In parent process - open cognitive engine port. 
    398                 StartShell(30003,uList, pList, oList, &ce_info); 
     399                StartShell(30002,uList, pList, oList, &ce_info); 
    399400        }  
    400401         
  • vtcross/branches/trnewman/CR_shell/src/socket/simple_client_main.cpp

    r66 r70  
    99    { 
    1010 
    11       ClientSocket client_socket ( "localhost", 30001 ); 
     11      ClientSocket client_socket ( "localhost", 30003 ); 
    1212 
    1313      std::string reply;