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

Revision 69, 3.8 KB (checked in by ahe, 16 years ago)

minor modification on socket operation

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[50];
18    char units[50];
19    char goal[50];
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[50];
36    char units[50];
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[50];
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    /*// 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
102    int i;
103    Utility * uList[10];
104    Parameter * pList[10];
105    Observable * oList[10];
106    CE_Info *ce_info;
107
108    // read unitilities
109    // numUtilities
110    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);
117       
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++){
124        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);
130                 
131        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);
137
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);*/
144       
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);*/
151    }
152
153    //for (i = 0; i < ce_info->numUtilities; i++){
154    /*for (i = 0; i < 1; i++){
155        printf("%s ", uList[i]);
156    }*/
157    printf("\n");
158
159
160    return 0;
161}
Note: See TracBrowser for help on using the browser.