Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef FLATHEADERS
00032 #include "simple_message/socket/tcp_client.h"
00033 #include "simple_message/log_wrapper.h"
00034 #else
00035 #include "tcp_client.h"
00036 #include "log_wrapper.h"
00037 #endif
00038
00039 namespace industrial
00040 {
00041 namespace tcp_client
00042 {
00043
00044 TcpClient::TcpClient()
00045 {
00046
00047 }
00048
00049 TcpClient::~TcpClient()
00050 {
00051 LOG_DEBUG("Destructing TCPClient");
00052 }
00053
00054 bool TcpClient::init(char *buff, int port_num)
00055 {
00056
00057 int rc;
00058 bool rtn;
00059 int disableNodeDelay = 1;
00060
00061 rc = SOCKET(AF_INET, SOCK_STREAM, 0);
00062 if (this->SOCKET_FAIL != rc)
00063 {
00064 this->setSockHandle(rc);
00065
00066
00067 rc = SET_NO_DELAY(this->getSockHandle(), disableNodeDelay);
00068 if (this->SOCKET_FAIL == rc)
00069 {
00070 LOG_WARN("Failed to set no socket delay, sending data can be delayed by up to 250ms");
00071 }
00072
00073
00074 memset(&this->sockaddr_, 0, sizeof(this->sockaddr_));
00075 this->sockaddr_.sin_family = AF_INET;
00076 this->sockaddr_.sin_addr.s_addr = INET_ADDR(buff);
00077 this->sockaddr_.sin_port = HTONS(port_num);
00078
00079 rtn = true;
00080
00081 }
00082 else
00083 {
00084 LOG_ERROR("Failed to create socket, rc: %d", rc);
00085 rtn = false;
00086 }
00087 return rtn;
00088 }
00089
00090 bool TcpClient::makeConnect()
00091 {
00092 bool rtn = false;
00093 int rc = this->SOCKET_FAIL;
00094 SOCKLEN_T addrSize = 0;
00095
00096 if (!this->isConnected())
00097 {
00098 addrSize = sizeof(this->sockaddr_);
00099 rc = CONNECT(this->getSockHandle(), (sockaddr *)&this->sockaddr_, addrSize);
00100 if (this->SOCKET_FAIL != rc)
00101 {
00102 LOG_INFO("Connected to server");
00103 this->setConnected(true);
00104 rtn = true;
00105 }
00106 else
00107 {
00108 this->logSocketError("Failed to connect to server", rc);
00109 rtn = false;
00110 }
00111 }
00112
00113 else
00114 {
00115 LOG_WARN("Tried to connect when socket already in connected state");
00116 }
00117
00118 return rtn;
00119
00120 }
00121
00122 }
00123 }
00124