root/vtcross/branches/trnewman/CR_shell/src/main_cognitive_engine.cpp @ 68

Revision 68, 3.7 KB (checked in by ahe, 16 years ago)

update client

Line 
1#include <stdio.h>
2#include <sys/types.h>
3#include <sys/socket.h>
4#include <netinet/in.h>
5#include <netdb.h>
6#include <iostream>
7
8using namespace std;
9
10struct CE_Info {
11    int numUtilities;
12    int numParameters;
13    int numObservables;
14};
15
16struct Utility {
17    char name[20];
18    char units[20];
19    char goal[20];
20   /* string name;
21    string units;
22    string goal;*/
23    float target;
24};
25
26struct Affect {
27    Utility * u;
28    //string relation;
29    char relation[20];
30};     
31
32struct Parameter {
33    /*string name;
34    string units;*/
35    char name[20];
36    char units[20];
37    float min;
38    int numAffects;
39    Affect affection_list[10];
40    float max;
41    float step;
42};     
43       
44struct Observable {
45    //string name;
46    char name[20];
47    Affect affection_list[10];
48    int numAffects;
49};
50
51// error handling
52void error(char *msg)
53{
54    perror(msg);
55    exit(0);
56}
57
58// main client socket
59int main(int argc, char *argv[])
60{
61    int sockfd, portno, n;
62    struct sockaddr_in serv_addr;
63    struct hostent *server;
64
65    // create a socket
66    char buffer[256];
67    if (argc < 3) {
68       fprintf(stderr,"usage %s hostname port\n", argv[0]);
69       exit(0);
70    }
71    portno = atoi(argv[2]);
72    sockfd = socket(AF_INET, SOCK_STREAM, 0);
73    if (sockfd < 0)
74        error("ERROR opening socket");
75    server = gethostbyname(argv[1]);
76    if (server == NULL) {
77        fprintf(stderr,"ERROR, no such host\n");
78        exit(0);
79    }
80    bzero((char *) &serv_addr, sizeof(serv_addr));
81    serv_addr.sin_family = AF_INET;
82    bcopy((char *)server->h_addr,
83         (char *)&serv_addr.sin_addr.s_addr,
84         server->h_length);
85    serv_addr.sin_port = htons(portno);
86    // cast sockaddr_in to sockaddr
87    if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
88        error("ERROR connecting");
89    /*if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)
90        error("ERROR connecting");*/
91   
92    printf("Please enter the message: ");
93    bzero(buffer,256);
94    fgets(buffer,255,stdin);
95    n = send(sockfd,buffer,strlen(buffer),MSG_NOSIGNAL);
96    if (n < 0)
97         error("ERROR writing to socket");
98    bzero(buffer,256);
99   
100    // read back xml information
101    int counter, i;
102    Utility * uList[10];
103    Parameter * pList[10];
104    Observable * oList[10];
105    CE_Info *ce_info;
106
107    // read unitilities
108    // numUtilities
109    bzero(buffer,256);
110    n = recv(sockfd,buffer,255,0);
111    if (n < 0)
112         error("ERROR reading from socket");
113    printf("%s\n",buffer);
114    ce_info->numUtilities = atoi(buffer);
115    printf("number of utilities: %d\n", ce_info->numUtilities);
116       
117    /*bzero(buffer,256);
118    n = recv(sockfd,buffer,255,0);
119    printf("%s ", buffer);*/
120   
121    //for (i = 0; i < ce_info->numUtilities; i++){
122    for (i = 0; i < 1; i++){
123        bzero(buffer,256);
124        n = recv(sockfd,buffer,255,0);
125        if (n < 0)
126            error("ERROR reading from socket");
127        printf("%s ", buffer);
128        strcpy(uList[i]->name, buffer);
129                 
130        bzero(buffer,256);
131        n = recv(sockfd,buffer,255,0);
132        if (n < 0)
133            error("ERROR reading from socket");
134        printf("%s ", buffer);
135        strcpy(uList[i]->units, buffer);
136
137        bzero(buffer,256);
138        n = recv(sockfd,buffer,255,0);
139        if (n < 0)
140            error("ERROR reading from socket");
141        printf("%s ", buffer);
142        strcpy(uList[i]->goal, buffer);
143       
144        /*bzero(buffer,256);
145        n = recv(sockfd,buffer,255,0);
146        if (n < 0)
147            error("ERROR reading from socket");
148        printf("%s ", buffer);
149        strcpy(uList[i]->target, buffer);*/
150    }
151
152    //for (i = 0; i < ce_info->numUtilities; i++){
153    /*for (i = 0; i < 1; i++){
154        printf("%s ", uList[i]);
155    }*/
156    printf("\n");
157
158
159    return 0;
160}
Note: See TracBrowser for help on using the browser.