Table of Contents
COMSTACK stack;
char *buf = 0;
int size = 0, length_incoming;
char server_address_str[] = "localhost:9999";
void *server_address_ip;
int status;
char *protocol_package = "GET / HTTP/1.0\r\n\r\n";
int protocol_package_length = strlen(protocol_package);
stack = cs_create(tcpip_type, 1, PROTO_HTTP);
if (!stack) {
perror("cs_create"); /* use perror() here since we have no stack yet */
return -1;
}
server_address_ip = cs_straddr(stack, server_address_str);
if (!server_address_ip) {
fprintf(stderr, "cs_straddr: address could not be resolved\n");
return -1;
}
status = cs_connect(stack, server_address_ip);
if (status) {
fprintf(stderr, "cs_connect: %s\n", cs_strerror(stack));
return -1;
}
status = cs_rcvconnect(stack);
if (status) {
fprintf(stderr, "cs_rcvconnect: %s\n", cs_strerror(stack));
return -1;
}
status = cs_put(stack, protocol_package, protocol_package_length);
if (status) {
fprintf(stderr, "cs_put: %s\n", cs_strerror(stack));
return -1;
}
/* Now get a response */
length_incoming = cs_get(stack, &buf, &size);
if (!length_incoming) {
fprintf(stderr, "Connection closed\n");
return -1;
} else if (length_incoming < 0) {
fprintf(stderr, "cs_get: %s\n", cs_strerror(stack));
return -1;
}
/* Print result */
fwrite(buf, length_incoming, 1, stdout);
/* clean up */
cs_close(stack);
if (buf)
xfree(buf);
return 0;