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