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_) {