diff --git a/gst/udp/gstmultiudpsink.c b/gst/udp/gstmultiudpsink.c
index 9cfea95..ac6b8ff 100644
--- a/gst/udp/gstmultiudpsink.c
+++ b/gst/udp/gstmultiudpsink.c
@@ -608,7 +608,7 @@ gst_multiudpsink_init_send (GstMultiUDPSink * sink)
 
   if (sink->sockfd == -1) {
     /* create sender socket try IP6, fall back to IP4 */
-    if ((sink->sock = socket (AF_INET6, SOCK_DGRAM, 0)) == -1)
+    if ((sink->sock = CREATE_SOCKET_IP6_UDP ()) == -1)
       if ((sink->sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1)
         goto no_socket;
 
diff --git a/gst/udp/gstudpnetutils.c b/gst/udp/gstudpnetutils.c
index 71828d3..d45f739 100644
--- a/gst/udp/gstudpnetutils.c
+++ b/gst/udp/gstudpnetutils.c
@@ -35,6 +35,29 @@
 
 #ifdef G_OS_WIN32
 
+int
+gst_udp_win32_create_socket_ip6 ()
+{
+   OSVERSIONINFO info;
+   int sock;
+   DWORD val = 0;
+
+   if (info.dwMajorVersion < 6) {
+     WSASetLastError (WSAEAFNOSUPPORT);
+     return -1;
+   }
+
+   if ((sock = socket (AF_INET6, SOCK_DGRAM, 0)) != -1)
+     return -1;
+ 
+   if (setsocktopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, (char*) &val, sizeof (val)) != 0) {
+     CLOSE_SOCKET (sock);
+     return -1;
+   }
+
+   return sock;
+}
+
 gboolean
 gst_udp_net_utils_win32_wsa_startup (GstObject * obj)
 {
diff --git a/gst/udp/gstudpnetutils.h b/gst/udp/gstudpnetutils.h
index 04d847c..b6107e2 100644
--- a/gst/udp/gstudpnetutils.h
+++ b/gst/udp/gstudpnetutils.h
@@ -53,6 +53,7 @@
 
 #ifdef G_OS_WIN32
 
+#define CREATE_SOCKET_IP6_UDP() gst_udp_win32_create_socket_ip6
 #define IOCTL_SOCKET ioctlsocket
 #define CLOSE_SOCKET(sock) closesocket(sock)
 #define setsockopt(sock,l,opt,val,len) setsockopt(sock,l,opt,(char *)(val),len)
@@ -61,6 +62,7 @@
 
 #else
 
+#define CREATE_SOCKET_IP6_UDP() socket(AF_INET6, SOCK_DGRAM, 0)
 #define IOCTL_SOCKET ioctl
 #define CLOSE_SOCKET(sock) close(sock)
 #define setsockopt(sock,l,opt,val,len) setsockopt(sock,l,opt,(void *)(val),len)
@@ -71,6 +73,7 @@
 
 #ifdef G_OS_WIN32
 
+int gst_udp_win32_create_socket_ip6 ();
 gboolean gst_udp_net_utils_win32_wsa_startup (GstObject * obj);
 
 #endif
