--- a/sources/network/udpsocket.cpp Thu Jul 23 00:16:47 2015 +0300 +++ b/sources/network/udpsocket.cpp Thu Jul 23 01:52:04 2015 +0300 @@ -33,19 +33,21 @@ #ifndef _WIN32 # include <sys/socket.h> # include <netinet/in.h> +# include <sys/time.h> +# include <unistd.h> #else # include <winsock2.h> # include <ws2tcpip.h> #endif #include <sys/types.h> -#include <sys/time.h> #include <string.h> #include <fcntl.h> -#include <unistd.h> #include "../huffman/huffman.h" -static char g_huffmanBuffer[131072]; +BEGIN_ZFC_NAMESPACE + +char UDPSocket::HuffmanBuffer[131072]; // ----------------------------------------------------------------------------- // @@ -56,7 +58,11 @@ // UDPSocket::~UDPSocket() { +#ifdef _WIN32 + closesocket (m_socket); +#else close (m_socket); +#endif } // ------------------------------------------------------------------------------------------------- @@ -89,8 +95,7 @@ // ------------------------------------------------------------------------------------------------- // -METHOD -UDPSocket::bind (unsigned short port) -> bool +bool UDPSocket::bind (unsigned short port) { sockaddr_in svaddr; memset (&svaddr, 0, sizeof svaddr); @@ -113,7 +118,7 @@ { sockaddr_in claddr; socklen_t socklen = sizeof claddr; - int length = ::recvfrom (m_socket, g_huffmanBuffer, sizeof g_huffmanBuffer, 0, + int length = ::recvfrom (m_socket, HuffmanBuffer, sizeof HuffmanBuffer, 0, reinterpret_cast<sockaddr*> (&claddr), &socklen); if (length == -1) @@ -126,7 +131,7 @@ unsigned char decodedPacket[MAX_DATAGRAM_LENGTH]; int decodedLength = sizeof decodedPacket; - HUFFMAN_Decode (reinterpret_cast<unsigned char*> (g_huffmanBuffer), + HUFFMAN_Decode (reinterpret_cast<unsigned char*> (HuffmanBuffer), decodedPacket, length, &decodedLength); datagram.from.host = ntohl (claddr.sin_addr.s_addr); datagram.from.port = ntohs (claddr.sin_port); @@ -136,14 +141,13 @@ // ------------------------------------------------------------------------------------------------- // -METHOD -UDPSocket::send (const IPAddress& address, const Bytestream& data) -> bool +bool UDPSocket::send (const IPAddress& address, const Bytestream& data) { - int encodedlength = sizeof g_huffmanBuffer; - HUFFMAN_Encode (data.data(), reinterpret_cast<unsigned char*> (g_huffmanBuffer), + int encodedlength = sizeof HuffmanBuffer; + HUFFMAN_Encode (data.data(), reinterpret_cast<unsigned char*> (HuffmanBuffer), data.written_length(), &encodedlength); sockaddr_in claddr = address.to_sockaddr_in(); - int res = ::sendto (m_socket, g_huffmanBuffer, encodedlength, 0, + int res = ::sendto (m_socket, HuffmanBuffer, encodedlength, 0, reinterpret_cast<sockaddr*> (&claddr), sizeof claddr); if (res == -1) @@ -154,3 +158,5 @@ return true; } + +END_ZFC_NAMESPACE \ No newline at end of file