diff --git a/components/net/cpp/src/peer.cpp b/components/net/cpp/src/peer.cpp
index 5e301ea846826e87883d5e9f060de990e3a4f2a9..84a450cbe9ec7bb08cbd9b5e2557d523e18fb007 100644
--- a/components/net/cpp/src/peer.cpp
+++ b/components/net/cpp/src/peer.cpp
@@ -591,10 +591,16 @@ int Peer::_send() {
 
 	auto send_vec = send_buf_.vector();
 	auto send_size = send_buf_.vector_size();
-	int c = 0;
+	vector<WSABUF> wsabuf(send_size);
+
 	for (int i = 0; i < send_size; i++) {
-		c += ftl::net::internal::send(sock_, (char*)send_vec[i].iov_base, (int)send_vec[i].iov_len, 0);
+		wsabuf[i].len = send_vec[i].iov_len;
+		wsabuf[i].buf = (char*)send_vec[i].iov_base;
+		//c += ftl::net::internal::send(sock_, (char*)send_vec[i].iov_base, (int)send_vec[i].iov_len, 0);
 	}
+
+	int bytessent;
+	int c = WSASend(sock_, wsabuf.data(), send_size, &bytessent, 0, NULL, NULL);
 #else
 	int c = ftl::net::internal::writev(sock_, send_buf_.vector(), (int)send_buf_.vector_size());
 #endif