/* * Copyright (c) 2011 Red Hat, Inc. * * All rights reserved. * * Author: Angus Salkeld * * 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 . */ #include "os_base.h" #ifdef HAVE_NETINET_IN_H #include #endif /* HAVE_NETINET_IN_H */ #ifdef HAVE_ARPA_INET_H #include #endif /* HAVE_ARPA_INET_H */ #ifdef HAVE_NETDB_H #include #endif /* HAVE_NETDB_H */ #ifdef HAVE_SYS_SOCKET_H #include #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; }