Я использую sys / socket.h для повторной отправки пульса на сервер.
Связь работает нормально. Проблема возникает при перезагрузке сервера.
Это мой код.
bool HbClient::start(const char *address, int port)
{
//create socket if it is not already created
if(sock == -1)
{
sock = socket(AF_INET , SOCK_STREAM , 0);
if (sock == -1)
{
printf("Could not create socket object");
return false;
}
printf("Socket object created\n");
}
server.sin_addr.s_addr = inet_addr( address );
server.sin_family = AF_INET;
server.sin_port = htons( port );
return connect_to_server();
}
bool HbClient::connect_to_server()
{
int status = connect(sock , (struct sockaddr *)&server , sizeof(server));
cout << "returned status: " << status << endl << flush;
if (status < 0)
{
cout << "Error. Connection failed." << endl << flush;
return false;
}
cout << "Connected to server" << endl << flush;
return true;
}
bool HbClient::send_data(const char *data)
{
int res = send(sock , data , strlen(data) , MSG_NOSIGNAL);
if( res < 0)
{
cout << "Data sending failed, status: " << res << endl << flush;
start("127.0.0.1", 9090);
return false;
}
cout << "Data send" << endl << flush;
return true;
}
Функция send_data () вызывается повторно. До перезагрузки сервера это работает нормально. Но при перезапуске сервера эти выходные данные печатались повторно.
Data sending failed, status: -1
returned status: -1
Error. Connection failed.
Я использую ОС Ubuntu 16.04 и компилятор g ++. Можете ли вы указать, в чем здесь проблема?