diff options
Diffstat (limited to 'src/libjin/Net/Socket.cpp')
-rw-r--r-- | src/libjin/Net/Socket.cpp | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/src/libjin/Net/Socket.cpp b/src/libjin/Net/Socket.cpp index 7e6fa7d..b28e4fc 100644 --- a/src/libjin/Net/Socket.cpp +++ b/src/libjin/Net/Socket.cpp @@ -4,22 +4,25 @@ namespace jin { namespace net { + Socket::Socket(const Socket& socket) + : handle(socket.handle) + , type(socket.type) + { + } Socket::Socket(const SocketInformation& info) - : tcpHandle(nullptr) - , udpHandle(nullptr) + : type(info.type) { - type = info.type; if (type == SocketType::TCP) { tk_IPaddress ip; ip.host = info.address; ip.port = info.port; - tcpHandle = tk_tcp_open(ip); + handle.tcpHandle = tk_tcp_open(ip); } else if (type == SocketType::UDP) { - udpHandle = tk_udp_open(info.port); + handle.udpHandle = tk_udp_open(info.port); } } @@ -32,12 +35,12 @@ namespace net #if JIN_NET_TEKCOS ip.host = tk_strtohl(address); ip.port = port; - tcpHandle = tk_tcp_open(ip); + handle.tcpHandle = tk_tcp_open(ip); #endif } else if (type == SocketType::UDP) { - udpHandle = tk_udp_open(port); + handle.udpHandle = tk_udp_open(port); } } @@ -49,11 +52,11 @@ namespace net tk_IPaddress ip; ip.host = address; ip.port = port; - tcpHandle = tk_tcp_open(ip); + handle.tcpHandle = tk_tcp_open(ip); } else if (type == SocketType::UDP) { - udpHandle = tk_udp_open(port); + handle.udpHandle = tk_udp_open(port); } } @@ -65,26 +68,24 @@ namespace net tk_IPaddress ip; ip.host = 0; ip.port = port; - tcpHandle = tk_tcp_open(ip); + handle.tcpHandle = tk_tcp_open(ip); } else if (type == SocketType::UDP) { - udpHandle = tk_udp_open(port); + handle.udpHandle = tk_udp_open(port); } } #if JIN_NET_TEKCOS - Socket::Socket(tk_TCPsocket* handle) - : tcpHandle(handle) - , udpHandle(nullptr) + Socket::Socket(tk_TCPsocket tcphandle) { + handle.tcpHandle = tcphandle; } - Socket::Socket(tk_UDPsocket* handle) - : tcpHandle(nullptr) - , udpHandle(handle) + Socket::Socket(tk_UDPsocket udphandle) { + handle.udpHandle = udphandle; } #endif // JIN_NET_TEKCOS @@ -99,9 +100,9 @@ namespace net return; #if JIN_NET_TEKCOS if (blocking) - tk_tcp_blocking(tcpHandle); + tk_tcp_blocking(&handle.tcpHandle); else - tk_tcp_nonblocking(tcpHandle); + tk_tcp_nonblocking(&handle.tcpHandle); #endif } @@ -111,7 +112,7 @@ namespace net return nullptr; Socket* client; #if JIN_NET_TEKCOS - tk_TCPsocket* socket = tk_tcp_accept(tcpHandle); + tk_TCPsocket socket = tk_tcp_accept(&handle.tcpHandle); client = new Socket(socket); #endif return client; @@ -123,7 +124,7 @@ namespace net return 0; #if JIN_NET_TEKCOS int len; - tk_tcp_recv(tcpHandle, buffer, size, &len); + tk_tcp_recv(&handle.tcpHandle, buffer, size, &len); return len; #endif } @@ -134,7 +135,7 @@ namespace net return 0; #if JIN_NET_TEKCOS int len; - tk_tcp_send(tcpHandle, buffer, size, &len); + tk_tcp_send(&handle.tcpHandle, buffer, size, &len); return len; #endif } @@ -149,7 +150,7 @@ namespace net pack.len = size; pack.ip.host = address; pack.ip.port = port; - tk_udp_sendto(udpHandle, &pack); + tk_udp_sendto(&handle.udpHandle, &pack); #endif } @@ -164,7 +165,7 @@ namespace net pack.len = size; pack.ip.host = address; pack.ip.port = port; - tk_udp_recvfrom(udpHandle, &pack); + tk_udp_recvfrom(&handle.udpHandle, &pack); return pack.len; #endif } @@ -174,13 +175,13 @@ namespace net if (type == SocketType::TCP) { #if JIN_NET_TEKCOS - tk_tcp_close(tcpHandle); + tk_tcp_close(&handle.tcpHandle); #endif } else if (type == SocketType::UDP) { #if JIN_NET_TEKCOS - tk_udp_close(udpHandle); + tk_udp_close(&handle.udpHandle); #endif } } |