* Name: gsocket.c
* Author: Guillermo Rodriguez Garcia <guille@iies.es>
* Purpose: GSocket main MSW file
- * Licence: The wxWindows licence
+ * Licence: The wxWidgets licence
* CVSID: $Id$
* -------------------------------------------------------------------------
*/
* warning: unreferenced formal parameter.
*/
# pragma warning(disable:4100)
+
+#ifdef __WXWINCE__
+ /* windows.h results in tons of warnings at max warning level */
+# ifdef _MSC_VER
+# pragma warning(push, 1)
+# endif
+# include <windows.h>
+# ifdef _MSC_VER
+# pragma warning(pop)
+# pragma warning(disable:4514)
+# endif
+#endif
+
#endif /* _MSC_VER */
#include <winsock.h>
ioctlsocket(sck->m_fd, FIONBIO, (u_long FAR *) &arg);
_GSocket_Enable_Events(sck);
+ /* allow a socket to re-bind if the socket is in the TIME_WAIT
+ state after being previously closed.
+ */
+ setsockopt(sck->m_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&arg, sizeof(u_long));
+
/* Bind to the local address,
* retrieve the actual address bound,
* and listen up to 5 connections.
FD_ZERO(&writefds);
FD_ZERO(&exceptfds);
FD_SET(socket->m_fd, &readfds);
- if (flags & GSOCK_OUTPUT_FLAG)
+ if (flags & GSOCK_OUTPUT_FLAG || flags & GSOCK_CONNECTION_FLAG)
FD_SET(socket->m_fd, &writefds);
FD_SET(socket->m_fd, &exceptfds);
/* Try select now */
if (select(socket->m_fd + 1, &readfds, &writefds, &exceptfds,
- &socket->m_timeout) <= 0)
+ &socket->m_timeout) <= 0)
{
/* What to do here? */
return (result & flags);
CHECK_ADDRESS(address, INET);
addr = &(((struct sockaddr_in *)address->m_addr)->sin_addr);
- addr->s_addr = hostaddr;
+ addr->s_addr = htonl(hostaddr);;
return GSOCK_NOERROR;
}
addr = (struct sockaddr_in *)address->m_addr;
- return addr->sin_addr.s_addr;
+ return ntohl(addr->sin_addr.s_addr);
}
unsigned short GAddress_INET_GetPort(GAddress *address)