Answers

Question and Answer:

  Home  Brew

⟩ Is there any way to tell if a socket is already connected?

There are two ways to determine if a socket is connected. The easiest is to check the return value of ISOCKET_Connect(). When a socket is already connected, ISOCKET_Connect() will return EISCONN.

It is also possible to monitor the state of a socket connection by registering for the socket status change events NE_SO_CLOSING, and NE_SO_CLOSED with INETMGR_OnEvent(). Using this method, your application can avoid trying to connect an already connected socket.

For more information about network and socket events, including NE_SO_CLOSING and NE_SO_CLOSED, please refer to the following include file: AEENet.h.

For Example:

// Register to receive Network and Socket events

INETMGR_OnEvent(piNet, (PFNNETMGREVENT)CheckNetStatus,

(void*)pMe, TRUE);

//Callback invoked when Network/Socket event is received

static void CheckNetStatus(void* cxt, NetMgrEvent evt,

uint32 dwData)

{

SampleApp *pMe = (SampleApp*)cxt;

if(evt == NE_SO_CLOSING || evt == NE_SO_CLOSED) {

// flag set to false to indicate socket is disconnected

pMe->m_SocketConnected = FALSE;

ReleaseNetAndSocket(pMe);

}

if(evt == NE_SO_CONNECTED) {

// flag set to true to indicate socket is connected

pMe->m_SocketConnected = TRUE;

}

return;

}

 176 views

More Questions for you: