diff --git a/Common/GmshSocket.h b/Common/GmshSocket.h index 4015540075ec1ec0a2e886d59bb725f31602a354..e5923cb134800f3b095a8de312568f153a2c65bb 100644 --- a/Common/GmshSocket.h +++ b/Common/GmshSocket.h @@ -47,6 +47,7 @@ #include <sys/un.h> #include <sys/time.h> #include <netinet/in.h> +#include <netinet/tcp.h> #include <netdb.h> #if defined(HAVE_NO_SOCKLEN_T) typedef int socklen_t; @@ -278,6 +279,8 @@ class GmshClient : public GmshSocket { // TCP/IP socket _sock = socket(AF_INET, SOCK_STREAM, 0); if(_sock < 0) return -1; + int one = 1; + setsockopt(_sock, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)); // try to connect socket to host:port const char *port = strstr(sockname, ":"); int portno = atoi(port + 1); @@ -368,6 +371,9 @@ class GmshServer : public GmshSocket{ _portno = atoi(port + 1); // create a socket tmpsock = socket(AF_INET, SOCK_STREAM, 0); + int one = 1; + setsockopt(tmpsock, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)); + #if !defined(WIN32) || defined(__CYGWIN__) if(tmpsock < 0) #else @@ -435,9 +441,10 @@ class GmshServer : public GmshSocket{ struct sockaddr_in from_in; socklen_t len = sizeof(from_in); _sock = accept(tmpsock, (struct sockaddr *)&from_in, &len); + int one = 1; + setsockopt(_sock, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)); } CloseSocket(tmpsock); - if(_sock < 0) throw "Socket accept failed"; return _sock;