M2M_SOCKET_BSD_TCP_KEEPALIVE Option

M2M_SOCKET_BSD_TCP_KEEPALIVE option is used to send on the connection the keepalive message to prevent this connection from being broken.

 

 

M2M_SOCKET_BSD_SOCKET tcp_socket = M2M_SOCKET_BSD_INVALID_SOCKET;

INT32 keep_alive = 0;

 

tcp_socket = m2m_socket_bsd_socket( M2M_SOCKET_BSD_AF_INET, M2M_SOCKET_BSD_SOCK_STREAM,

                                                                M2M_SOCKET_BSD_IPPROTO_TCP );

                              

keep_alive = 1;

/* Enable the keepalive feature */

res = m2m_socket_bsd_set_sock_opt(tcp_socket, M2M_SOCKET_BSD_SOL_SOCKET,

                                                              M2M_SOCKET_BSD_SO_KEEPALIVE, &keep_alive, sizeof(keep_alive));

 

/* Set the timeout value after which the keepalive will start  */

keep_alive = 40000;

res = m2m_socket_bsd_set_sock_opt(tcp_socket, M2M_SOCKET_BSD_IPPROTO_TCP,

                                                              M2M_SOCKET_BSD_TCP_KEEPALIVE, &keep_alive, sizeof(keep_alive));

 

/* Define the remote socket parameters (port, ip address..) */

memset(&stSockAddr, 0, sizeof(struct M2M_SOCKET_BSD_SOCKADDR_IN));

 

stSockAddr.sin_family = M2M_SOCKET_BSD_PF_INET;

stSockAddr.sin_port = m2m_socket_bsd_htons(PORT);

stSockAddr.sin_addr.s_addr = m2m_socket_bsd_inet_addr(IP_SERVER);

 

 

/* Attempt to actually connect to the socket */

if (M2M_SOCKET_BSD_INVALID_SOCKET == m2m_socket_bsd_connect(tcp_socket, (M2M_SOCKET_BSD_SOCKADDR

                                                                                           *)&stSockAddr, sizeof(struct M2M_SOCKET_BSD_SOCKADDR_IN)))

···············