35 sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
38 sprintf(
err_msg,
"Cannot open socket");
47 server.sin_family = AF_INET;
48 server.sin_addr.s_addr = inet_addr(ip);
49 server.sin_port = htons(port);
64 sprintf(
err_msg,
"Failed to connect with server");
71 fcntl(
sock,F_SETOWN,getpid());
72 fcntl(
sock,F_SETFL,O_ASYNC);
87 sprintf(
err_msg,
"Failed to close connection");
101 sprintf(
err_msg,
"Connection not established");
117 sprintf(
err_msg,
"Mismatch in number of sent bytes");
122 sprintf(
err_msg,
"Alarm! error not caught");
135 sprintf(
err_msg,
"Connection not established");
148 ret=recv(
sock,data,size, MSG_PEEK);
151 sprintf(
err_msg,
"Failed to peek data from server");
160 ret=recv(
sock,data,size,flags);
163 sprintf(
err_msg,
"Failed to receive bytes from server");
166 }
else if(number!=NULL)
178 cout<<
"Error!! "<<text<<
", "<<
err_msg<<endl;
int Receive(char *data, int size, bool peek=false, int *number=NULL, int flags=0)
Read data.
int GetSocket()
Get socket value.
Main header for tcp communications.
int Disconnect(void)
Disconnect from server.
int Connect(void)
Connect to server.
~tcp_client()
Destructor of the class.
char err_msg[1024]
Last error message.
tcp_client(const char *ip, int port, bool async_comm=false)
Constructor of the class.
bool connected
Status of the connection.
struct sockaddr_in server
Configuration structure.
int Send(char *data, int size)
Send data.
bool async
Asynchronous comm.
int sock
Socket identification.
int ret
Return value for functions.
int perr(const char *text)
Print error message.