/* -------------------------------------------------------------------------
* Project: GSocket (Generic Socket)
- * Name: gsocket.cpp
+ * Name: src/msw/gsocket.cpp
* Copyright: (c) Guilhem Lavaux
* Licence: wxWindows Licence
* Author: Guillermo Rodriguez Garcia <guille@iies.es>
#ifndef __GSOCKET_STANDALONE__
# include "wx/platform.h"
-# include "wx/setup.h"
#endif
#if wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__)
ioctlsocket(m_fd, FIONBIO, (u_long FAR *) &arg);
gs_gui_functions->Enable_Events(this);
+ // If the reuse flag is set, use the applicable socket reuse flag
+ if (m_reusable)
+ {
+ setsockopt(m_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&arg, sizeof(u_long));
+ }
+
+ // If a local address has been set, then we need to bind to it before calling connect
+ if (m_local && m_local->m_addr)
+ {
+ bind(m_fd, m_local->m_addr, m_local->m_len);
+ }
+
/* Connect it to the peer address, with a timeout (see below) */
ret = connect(m_fd, m_peer->m_addr, m_peer->m_len);
/* If the socket is blocking, wait for data (with a timeout) */
if (Input_Timeout() == GSOCK_TIMEDOUT)
+ {
+ m_error = GSOCK_TIMEDOUT;
return -1;
+ }
/* Read the data */
if (m_stream)
typedef void (*wxDummy)();
#endif /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
-