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

Files:
1 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