From 18c26cd9e60beeb3bc5bf0b8edcfe9542c9b1965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 15 Jun 2017 11:12:26 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@507 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src_main/io/piethernet.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src_main/io/piethernet.cpp b/src_main/io/piethernet.cpp index d6abfb6a..1dadd2ca 100755 --- a/src_main/io/piethernet.cpp +++ b/src_main/io/piethernet.cpp @@ -143,6 +143,7 @@ PIEthernet::~PIEthernet() { void PIEthernet::construct() { //piCout << " PIEthernet" << uint(this); + setOption(BlockingWrite); piMonitor.ethernets++; connected_ = connecting_ = listen_threaded = server_bounded = false; port_ = port_s = port_r = 0; @@ -634,7 +635,13 @@ int PIEthernet::writeDevice(const void * data, int max_size) { else*/ PRIVATE->saddr_.sin_addr.s_addr = inet_addr(ip_s.dataAscii()); PRIVATE->saddr_.sin_family = AF_INET; //piCoutObj << "write to" << ip_s << ":" << port_s << "socket" << sock_s << max_size << "bytes ..."; - return ethSendto(sock_s, data, max_size, 0, (sockaddr * )&PRIVATE->saddr_, sizeof(PRIVATE->saddr_)); + return ethSendto(sock_s, data, max_size, +#ifndef WINDOWS + isOptionSet(BlockingWrite) ? 0 : MSG_DONTWAIT +#else + 0 +#endif + , (sockaddr * )&PRIVATE->saddr_, sizeof(PRIVATE->saddr_)); //piCout << "[PIEth] write to" << ip_s << ":" << port_s << "ok"; case TCP_Client: if (connecting_) {