/*
* Copyright (c) 2011 Red Hat, Inc.
*
* All rights reserved.
*
* Author: Angus Salkeld <asalkeld@redhat.com>
*
* libqb is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 2.1 of the License, or
* (at your option) any later version.
*
* libqb is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with libqb. If not, see <http://www.gnu.org/licenses/>.
*/
#include "os_base.h"
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif /* HAVE_NETINET_IN_H */
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif /* HAVE_ARPA_INET_H */
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif /* HAVE_NETDB_H */
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif /* HAVE_SYS_SOCKET_H */
int
main(int argc, char *argv[])
{
int sock;
int32_t res;
char send_data[1024];
char recv_data[1024];
char *newline;
struct sockaddr_in server_addr;
struct hostent *host = gethostbyname("127.0.0.1");
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("Socket");
exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(5000);
memcpy(&server_addr.sin_addr, host->h_addr_list[0],
sizeof(server_addr.sin_addr));
bzero(&(server_addr.sin_zero), 8);
if (connect(sock, (struct sockaddr *)&server_addr,
sizeof(struct sockaddr)) == -1) {
perror("Connect");
exit(1);
}
while (1) {
printf("\nSEND (q or Q to quit) : ");
if (fgets(send_data, 1024, stdin) == NULL) {
continue;
}
newline = strrchr(send_data, '\n');
if (newline) {
*newline = '\0';
}
res = send(sock, send_data, strlen(send_data), 0);
if (strcasecmp(send_data, "q") == 0) {
close(sock);
printf("you typed QUIT\n");
break;
}
if (res > 0) {
res = recv(sock, recv_data, 1024, 0);
if (res > 0) {
recv_data[res] = '\0';
printf("\nResponse: %s ", recv_data);
} else {
perror("recv");
}
}
}
return EXIT_SUCCESS;
}