From aecb6c466c1e7efa0f07809aa18096e7d5559850 Mon Sep 17 00:00:00 2001 From: oroborus Date: Tue, 5 Aug 2008 15:56:30 +0000 Subject: - server/client poziva neblokujuci rezim TCP socketov git-svn-id: http://opensvn.csie.org/tuxanci_ng@190 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/net/tcp.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/net/tcp.c') diff --git a/src/net/tcp.c b/src/net/tcp.c index 1c3f6c0..f6c3dad 100755 --- a/src/net/tcp.c +++ b/src/net/tcp.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "tcp.h" @@ -274,6 +275,33 @@ int disableNagle(sock_tcp_t *p) return result; } +int setTcpSockNonBlock(sock_tcp_t *p) +{ + /* Set to nonblocking socket mode */ +#ifndef __WIN32__ + int oldFlag; + + oldFlag = fcntl (p->sock, F_GETFL, 0); + + if( fcntl(p->sock, F_SETFL, oldFlag | O_NONBLOCK) == -1 ) + { + //printf("error setTcpSockNonBlock\n"); + return -1; + } + + //printf("setTcpSockNonBlock OK\n"); +#else + unsigned long arg = 1; + // Operation is FIONBIO. Parameter is pointer on non-zero number. + if( ioctlsocket(p->sock, FIONBIO, &arg) == SOCKET_ERROR ) + { + WSACleanup(); + return -1; + } +#endif + return 0; +} + int readTcpSocket(sock_tcp_t *p, void *address, int len) { assert( p != NULL ); -- cgit v1.2.3