+#if defined(WIN32)
+#define EWOULDBLOCK WSAEWOULDBLOCK
+#define ECONNREFUSED WSAECONNREFUSED
+
+#define SOCKETERRNO WSAGetLastError()
+
+#define SOCKLEN_T int
+#elif defined(__MORPHOS__)
+#define ioctlsocket IoctlSocket
+#define closesocket CloseSocket
+#define SOCKETERRNO Errno()
+
+#define SOCKLEN_T int
+#else
+#define ioctlsocket ioctl
+#define closesocket close
+#define SOCKETERRNO errno
+
+#define SOCKLEN_T socklen_t
+#endif
+
+// to make LHNETADDRESS_FromString resolve repeated hostnames faster, cache them
+#define MAX_NAMECACHE 64
+static struct namecache_s
+{
+ lhnetaddress_t address;
+ double expirationtime;
+ char name[64];
+}
+namecache[MAX_NAMECACHE];
+static int namecacheposition = 0;
+