#include "tcp_client.h"
|
|
#ifdef LOG_TAG
|
#undef LOG_TAG
|
#endif
|
#define LOG_TAG "aiqtool"
|
|
TCPClient::TCPClient()
|
{
|
sock = -1;
|
port = 0;
|
address = "";
|
}
|
|
TCPClient::~TCPClient()
|
{
|
if (sock > 0) {
|
close(sock);
|
}
|
}
|
|
bool TCPClient::Setup(string address, int port)
|
{
|
if (sock == -1) {
|
sock = socket(AF_INET, SOCK_STREAM, 0);
|
if (sock == -1) {
|
LOG_ERROR("Could not create socket\n");
|
}
|
}
|
if ((signed)inet_addr(address.c_str()) == -1) {
|
struct hostent* he;
|
struct in_addr** addr_list;
|
if ((he = gethostbyname(address.c_str())) == NULL) {
|
herror("gethostbyname");
|
LOG_ERROR("Failed to resolve hostname\n");
|
return false;
|
}
|
addr_list = (struct in_addr**)he->h_addr_list;
|
//for (int i = 0; addr_list[i] != NULL; i++) {
|
server.sin_addr = *addr_list[0];
|
// break;
|
// }
|
} else {
|
server.sin_addr.s_addr = inet_addr(address.c_str());
|
}
|
server.sin_family = AF_INET;
|
server.sin_port = htons(port);
|
if (connect(sock, (struct sockaddr*)&server, sizeof(server)) < 0) {
|
LOG_ERROR("connect failed. Error");
|
return false;
|
}
|
return true;
|
}
|
|
bool TCPClient::Send(string data)
|
{
|
if (sock != -1) {
|
if (send(sock, data.c_str(), strlen(data.c_str()), 0) < 0) {
|
LOG_ERROR("Send failed : %s\n", data.c_str());
|
return false;
|
}
|
} else {
|
return false;
|
}
|
return true;
|
}
|
|
int TCPClient::Send(char* buff, int size)
|
{
|
int ret = -1;
|
if (sock != -1) {
|
ret = send(sock, buff, size, 0);
|
if (ret <= 0) {
|
LOG_ERROR("Send buff size %d failed\n", size);
|
return ret;
|
}
|
}
|
return ret;
|
}
|
|
string TCPClient::Receive(int size)
|
{
|
char buffer[size];
|
memset(&buffer[0], 0, sizeof(buffer));
|
string reply;
|
if (recv(sock, buffer, size, 0) < 0) {
|
LOG_ERROR("receive failed %s !\n", strerror(errno));
|
return "\0";
|
}
|
buffer[size - 1] = '\0';
|
reply = buffer;
|
return reply;
|
}
|
|
int TCPClient::Receive(char* buff, int size)
|
{
|
int ret = -1;
|
memset(buff, 0, size);
|
ret = recv(sock, buff, size, 0);
|
if (ret < 0) {
|
LOG_ERROR("receive failed %s !\n", strerror(errno));
|
return -1;
|
}
|
return ret;
|
}
|