};
 {endcode}
 
+{section: Memo on conversion}
+
+Remember that socket() does accept AF_INET and AF_INET6. You should change appropriately as well. If the user's intention is obvious like following code, I could write a wrapper function that deals automatically. However, I must consider more complicated situations like calling socket() at one site and passing the socket descriptor to elsewhere. And then calls connect() or accept() on it.
+
+{code}
+static SOCKET
+tcp_connect( const char *host, int port )
+{
+    struct hostent *h;
+    struct sockaddr_in address;
+    int success;
+    SOCKET fd;
+
+    if(!initialize_sockets())
+        return INVALID_SOCKET;
+
+    h = gethostbyname(host);
+    if(!h) return INVALID_SOCKET;
+
+    address.sin_port = htons((unsigned short)port);
+    address.sin_family = h->h_addrtype;
+    memcpy(&address.sin_addr.s_addr,h->h_addr_list[0],sizeof(address.sin_addr.s_addr));
+
+#if defined(WIN32)
+    // Create the socket with no overlapped I/0 so we can later associate the socket
+    // with a valid file descripter using _open_osfhandle.
+    fd = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, 0);
+#else
+    fd = socket( AF_INET, SOCK_STREAM, 0 );
+#endif
+    if(fd == INVALID_SOCKET) return INVALID_SOCKET;
+
+    success = connect( fd, (struct sockaddr *) &address, sizeof(address) );
+    if(success == SOCKET_ERROR) {
+        closesocket(fd);
+        return INVALID_SOCKET;
+    }
+
+    return fd;
+}
+{endcode}
+
 {section: IPv6 support in External Libraries}
 
 {subsection: Unsupported}