diff --git a/CMakeLists.txt b/CMakeLists.txt
index c8436546b150b9cafa715e87229e96e403de6bcf..8ef859b449b02e8e5d6da7a7a6bd59fd575df0ca 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,9 +38,27 @@ endif()
 file(GLOB DAP_CLIENT_SOURCES src/*.c)
 file(GLOB DAP_CLIENT_HEADERS include/*.h)
 
+if(WIN32)
+  include_directories(../libdap/src/win32/)
+  include_directories(../3rdparty/libmemcached/)
+  include_directories(../3rdparty/libmemcached/win32/)
+  include_directories(../3rdparty/wepoll/include/)
+  include_directories(../3rdparty/uthash/src/)
+  include_directories(../3rdparty/libjson-c/)
+  include_directories(../3rdparty/libmagic/src/)
+  include_directories(../3rdparty/curl/include/)
+endif()
+
 add_library(${PROJECT_NAME} STATIC ${DAP_CLIENT_HEADERS} ${DAP_CLIENT_SOURCES})
 
-target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core dap_udp_server dap_http_server dap_enc_server dap_stream dap_session dap_stream_ch pthread memcached ev)
+if(WIN32)
+  target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core dap_udp_server dap_http_server dap_enc_server dap_stream dap_session dap_stream_ch)
+endif()
+
+if(UNIX)
+  target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core dap_udp_server dap_http_server dap_enc_server dap_stream dap_session dap_stream_ch pthread memcached ev)
+endif()
+
 target_include_directories(${PROJECT_NAME} PUBLIC include)
 target_include_directories(${PROJECT_NAME} PRIVATE src)
 
diff --git a/src/dap_client.c b/src/dap_client.c
index 08051acdbae23c279b44c2bf671f46164b39c09e..f9414d08725c2860e75fa12438e1a3d8eb63ca93 100644
--- a/src/dap_client.c
+++ b/src/dap_client.c
@@ -1,7 +1,26 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdint.h>
 #include <string.h>
 #include <stdbool.h>
 #include <unistd.h>
 
+#ifdef WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <wepoll.h>
+#endif
+
+#include <pthread.h>
+
 #include "dap_common.h"
 #include "dap_strfuncs.h"
 #include "dap_http_client.h"
@@ -9,8 +28,6 @@
 #include "dap_client_pvt.h"
 #include "dap_stream_ch_proc.h"
 
-
-
 #define LOG_TAG "dap_client"
 
 // FSM realization: thats callback executes after the every stage is done
diff --git a/src/dap_client_pool.c b/src/dap_client_pool.c
index e386c4206532118eecfcb486a11e50b193ae8534..10c27b117582394ed747e13a111939db84429b91 100644
--- a/src/dap_client_pool.c
+++ b/src/dap_client_pool.c
@@ -1,8 +1,28 @@
-#include <dirent.h>
+#include <stdlib.h>
 #include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdint.h>
 #include <string.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include <dirent.h>
 #include <errno.h>
 
+#ifdef WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <wepoll.h>
+#endif
+
+#include <pthread.h>
+
 #include "dap_common.h"
 #include "dap_config.h"
 #include "dap_events.h"
@@ -12,7 +32,6 @@
 
 #define LOG_TAG "dap_client_pool"
 
-
 // Single-linked peers list
 struct dap_client_list{
     dap_client_t * item;
diff --git a/src/dap_client_pvt.c b/src/dap_client_pvt.c
index 6529320b7139a1b4e7cc153b1ab6085af9a2e3ca..1899ba31c0efc924215117cd5759e4f443190ba4 100644
--- a/src/dap_client_pvt.c
+++ b/src/dap_client_pvt.c
@@ -21,17 +21,39 @@
     You should have received a copy of the GNU General Public License
     along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include <sys/types.h>          /* See NOTES */
-#include <sys/socket.h>
 
+#include <stdlib.h>
 #include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <stdint.h>
 #include <string.h>
 #include <stdbool.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <errno.h>
 #include <assert.h>
-#include <json-c/json.h>
-#include <unistd.h> // for close
 #include <fcntl.h>
 
+#ifdef WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <wepoll.h>
+#else
+#include <sys/types.h>          /* See NOTES */
+#include <sys/socket.h>
+#endif
+
+#include <pthread.h>
+
+#include <json-c/json.h>
+
 #include "dap_enc_key.h"
 #include "dap_enc_base64.h"
 #include "dap_enc.h"
@@ -55,7 +77,6 @@
 
 static void s_stage_status_after(dap_client_pvt_t * a_client_internal);
 
-
 // ENC stage callbacks
 void m_enc_init_response(dap_client_t *, void *, size_t);
 void m_enc_init_error(dap_client_t *, int);
@@ -203,9 +224,19 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt)
         case STAGE_STREAM_SESSION: {
             log_it(L_INFO, "Go to stage STREAM_SESSION: process the state ops");
 
-            a_client_pvt->stream_socket = socket(PF_INET, SOCK_STREAM, 0);
-            setsockopt(a_client_pvt->stream_socket, SOL_SOCKET, SO_SNDBUF, (const void*) 50000, sizeof(int));
+            a_client_pvt->stream_socket = socket( PF_INET, SOCK_STREAM, 0 );
+#ifdef _WIN32 
+            {
+              int buffsize = 65536;
+              int optsize = sizeof( int );
+              setsockopt(a_client_pvt->stream_socket, SOL_SOCKET, SO_SNDBUF, (char *)&buffsize, &optsize );
+              setsockopt(a_client_pvt->stream_socket, SOL_SOCKET, SO_RCVBUF, (char *)&buffsize, &optsize );
+            }
+#else
+            setsockopt(a_client_pvt->stream_socket, SOL_SOCKET, SO_SNDBUF, (const void *) 50000, sizeof(int));
             setsockopt(a_client_pvt->stream_socket, SOL_SOCKET, SO_RCVBUF, (const void *) 50000, sizeof(int));
+#endif
+
             // Wrap socket and setup callbacks
             static dap_events_socket_callbacks_t l_s_callbacks = {
                 .read_callback = m_es_stream_read,