summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorConnor Thomson <blumatrikz@gmail.com>2026-09-08 18:27:39 -0700
committerConnor Thomson <blumatrikz@gmail.com>2026-09-08 18:27:39 -0700
commitf1ddc12b68b4e4c8087962de25260470e6df2bea (patch)
tree7d0440a6402a9b0ef75ded23fa64b68534255bba /src/net
parent6025860a61386bf767b29c3ec5fd0d31285f1056 (diff)
Add tuxanci2 files
Diffstat (limited to 'src/net')
-rw-r--r--src/net/CMakeLists.txt7
-rw-r--r--src/net/dns.c26
-rw-r--r--src/net/dns.h6
-rw-r--r--src/net/tcp.c337
-rw-r--r--src/net/tcp.h45
-rw-r--r--src/net/udp.c328
-rw-r--r--src/net/udp.h37
7 files changed, 0 insertions, 786 deletions
diff --git a/src/net/CMakeLists.txt b/src/net/CMakeLists.txt
deleted file mode 100644
index 2e93cef..0000000
--- a/src/net/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-###############################################################################
-# tuxanci/src/*/CMakeLists.txt
-###############################################################################
-# Generate source_code files from .c files we find in directory
-###############################################################################
-MacroAddSources()
-###############################################################################
diff --git a/src/net/dns.c b/src/net/dns.c
deleted file mode 100644
index 83853e2..0000000
--- a/src/net/dns.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef __WIN32__
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#else
-#include <windows.h>
-#include <wininet.h>
-#endif
-
-#include <string.h>
-#include "main.h"
-#include "dns.h"
-
-char *dns_resolv(char *domain)
-{
- struct hostent *host;
-
- host = gethostbyname(domain);
-
- if (host == NULL || host->h_addr_list[0] == NULL) {
- return NULL;
- }
-
- return strdup(inet_ntoa(*((struct in_addr *) host->h_addr_list[0])));
-}
diff --git a/src/net/dns.h b/src/net/dns.h
deleted file mode 100644
index 082c01f..0000000
--- a/src/net/dns.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef DNS_H
-#define DNS_H
-
-extern char *dns_resolv(char *domain);
-
-#endif /* DNS_H */
diff --git a/src/net/tcp.c b/src/net/tcp.c
deleted file mode 100644
index 20ab3aa..0000000
--- a/src/net/tcp.c
+++ /dev/null
@@ -1,337 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef __WIN32__
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/select.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#include <fcntl.h>
-#else /* __WIN32__ */
-#include <windows.h>
-#include <wininet.h>
-#endif /* __WIN32__ */
-
-#include <unistd.h>
-#include <assert.h>
-
-#include "tcp.h"
-
-sock_tcp_t *sock_tcp_new(void)
-{
- sock_tcp_t *new;
-
- new = malloc(sizeof(sock_tcp_t));
- memset(new, 0, sizeof(sock_tcp_t));
-
- return new;
-}
-
-void sock_tcp_destroy(sock_tcp_t *p)
-{
- assert(p != NULL);
- free(p);
-}
-
-static int getProto(char *str)
-{
- if (strstr(str, ".") != NULL)
- return PROTO_TCPv4;
- if (strstr(str, ":") != NULL)
- return PROTO_TCPv6;
-
- fatal("Network protocol not detected");
- return -1;
-}
-
-sock_tcp_t *sock_tcp_bind(char *address, int port)
-{
- sock_tcp_t *new;
- unsigned long param_setsock = 1;
- int len;
- int ret;
-
- assert(port > 0 && port < 65535);
-
- new = sock_tcp_new();
- new->proto = getProto(address);
- ret = -1; /* no warnings */
-
- assert(new != NULL);
-
- if (new->proto == PROTO_TCPv4) {
- new->sock = socket(AF_INET, SOCK_STREAM, 0);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_TCPv6) {
- new->sock = socket(AF_INET6, SOCK_STREAM, 0);
- }
-#endif
-
- if (new->sock < 0) {
- error("Unable to create TCP socket");
- sock_tcp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- setsockopt(new->sock, SOL_SOCKET, SO_REUSEADDR, (char *) &param_setsock, sizeof(param_setsock));
-
- if (new->proto == PROTO_TCPv4) {
- new->sockAddr.sin_family = AF_INET;
-#ifndef __WIN32__
- inet_pton(AF_INET, address, &(new->sockAddr.sin_addr));
-#else
- new->sockAddr.sin_addr.s_addr = inet_addr(address);
-#endif
- new->sockAddr.sin_port = htons(port);
-
- len = sizeof(new->sockAddr);
- ret = bind(new->sock, (struct sockaddr *) &new->sockAddr, len);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_TCPv6) {
- new->sockAddr6.sin6_family = AF_INET6;
- /*new->sockAddr.sin_addr.s_addr = htonl(INADDR_ANY);*/
-#ifndef __WIN32__
- inet_pton(AF_INET6, address, &(new->sockAddr6.sin6_addr));
-#else /* __WIN32__ */
- new->sockAddr6.sin6_addr.s_addr = inet_addr(address);
-#endif /* __WIN32__ */
- new->sockAddr6.sin6_port = htons(port);
-
- len = sizeof(new->sockAddr6);
- ret = bind(new->sock, (struct sockaddr *) &new->sockAddr6, len);
- }
-#endif /* SUPPORT_IPv6 */
-
- if (ret < 0) {
- error("Unable to bind to TCP port [%d]", port);
- sock_tcp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- listen(new->sock, 5);
-
- return new;
-}
-
-sock_tcp_t *sock_tcp_accept(sock_tcp_t *p)
-{
- sock_tcp_t *new;
- int client_len;
-
- assert(p != NULL);
- assert(p->sock >= 0);
-
- new = sock_tcp_new();
- new->proto = p->proto;
-
- if (new->proto == PROTO_TCPv4) {
- client_len = sizeof(new->sockAddr);
-#ifndef __WIN32__
- new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr, (socklen_t *) &client_len);
-#else
- new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr, (long *) &client_len);
-#endif
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_TCPv6) {
- client_len = sizeof(new->sockAddr6);
-#ifndef __WIN32__
- new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr6, (socklen_t *) &client_len);
-#else /* __WIN32__ */
- new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr6, (long *) &client_len);
-#endif /* __WIN32__ */
- }
-#endif /* SUPPORT_IPv6 */
-
- if (new->sock < 0) {
- sock_tcp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- return new;
-}
-
-void sock_tcp_get_ip(sock_tcp_t *p, char *str_ip, int len)
-{
- assert(p != NULL);
- assert(str_ip != NULL);
-
- if (p->proto == PROTO_TCPv4) {
-#ifndef __WIN32__
- inet_ntop(AF_INET, &(p->sockAddr.sin_addr), str_ip, len);
-#else
- strcpy(str_ip, inet_ntoa(p->sockAddr.sin_addr));
-#endif
- }
-#ifdef SUPPORT_IPv6
- if (p->proto == PROTO_TCPv6) {
-#ifndef __WIN32__
- inet_ntop(AF_INET6, &(p->sockAddr6.sin6_addr), str_ip, len);
-#else /* __WIN32__ */
- /* NOT TESTED */
- strcpy(str_ip, inet_ntoa(p->sockAddr6.sin6_addr));
-#endif /* __WIN32__ */
- }
-#endif /* SUPPORT_IPv6 */
-}
-
-int sock_tcp_get_port(sock_tcp_t *p)
-{
- assert(p != NULL);
-
- if (p->proto == PROTO_TCPv4) {
- return htons(p->sockAddr.sin_port);
- }
-#ifdef SUPPORT_IPv6
- if (p->proto == PROTO_TCPv6) {
- return htons(p->sockAddr6.sin6_port);
- }
-#endif
-
- fatal("Bad IP protocol");
-
- return -1;
-}
-
-sock_tcp_t *sock_tcp_connect(char *ip, int port)
-{
- sock_tcp_t *new;
- int len;
- int ret;
-
- assert(ip != NULL);
- assert(port > 0 && port < 65535);
-
- new = sock_tcp_new();
- new->proto = getProto(ip);
- ret = -1; /* no warnings */
-
- if (new->proto == PROTO_TCPv4) {
- new->sock = socket(AF_INET, SOCK_STREAM, 0);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_TCPv6) {
- new->sock = socket(AF_INET6, SOCK_STREAM, 0);
- }
-#endif
-
- if (new->sock < 0) {
- error("Unable to create TCP socket for connecting");
- sock_tcp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- if (new->proto == PROTO_TCPv4) {
- new->sockAddr.sin_family = AF_INET;
- new->sockAddr.sin_addr.s_addr = inet_addr(ip);
- new->sockAddr.sin_port = htons(port);
-
- len = sizeof(new->sockAddr);
- ret = connect(new->sock, (struct sockaddr *) &new->sockAddr, len);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_TCPv6) {
- new->sockAddr6.sin6_family = AF_INET6;
- inet_pton(AF_INET6, ip, &(new->sockAddr6.sin6_addr));
- new->sockAddr6.sin6_port = htons(port);
-
- len = sizeof(new->sockAddr6);
- ret = connect(new->sock, (struct sockaddr *) &new->sockAddr6, len);
- }
-#endif
-
- if (ret < 0) {
- error("Unable to connect to [%s]:%d", ip, port);
- sock_tcp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- return new;
-}
-
-int sock_tcp_disable_nagle(sock_tcp_t *p)
-{
- int flag = 1;
- int result;
-
- result = setsockopt(p->sock, /* affected socket */
- IPPROTO_TCP, /* set option at TCP level */
- TCP_NODELAY, /* name of the option */
- (char *) &flag, /* the cast is a historical cruft */
- sizeof(int)); /* length of the option value */
-
- return result;
-}
-
-int sock_tcp_set_non_block(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) {
- return -1;
- }
-#else
- unsigned long arg = 1;
- /* operation is FIONBIO; parameter is a pointer on non-zero number */
- if (ioctlsocket(p->sock, FIONBIO, &arg) == SOCKET_ERROR) {
- WSACleanup();
- return -1;
- }
-#endif
- return 0;
-}
-
-int sock_tcp_read(sock_tcp_t *p, void *address, int len)
-{
- assert(p != NULL);
- assert(address != NULL);
-
- return read(p->sock, address, len);
-}
-
-int sock_tcp_write(sock_tcp_t *p, void *address, int len)
-{
- assert(p != NULL);
- assert(address != NULL);
-
- return write(p->sock, address, len);
-}
-
-void sock_tcp_close(sock_tcp_t *p)
-{
- assert(p != NULL);
-
- close(p->sock);
- sock_tcp_destroy(p);
-#ifdef __WIN32__
- WSACleanup();
-#endif
-}
diff --git a/src/net/tcp.h b/src/net/tcp.h
deleted file mode 100644
index 20d4136..0000000
--- a/src/net/tcp.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef MY_TCP_H
-#define MY_TCP_H
-
-#include "main.h"
-
-#ifndef __WIN32__
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netinet/tcp.h>
-#else
-#include <windows.h>
-#include <wininet.h>
-#endif
-
-#define PROTO_TCPv4 0
-#define PROTO_TCPv6 1
-
-typedef struct struct_sock_tcp_t {
-#ifndef __WIN32_
- int sock;
-#else
- SOCKET sock;
-#endif
- int proto;
-
- struct sockaddr_in sockAddr;
-# ifdef SUPPORT_IPv6
- struct sockaddr_in6 sockAddr6;
-# endif
-} sock_tcp_t;
-
-extern sock_tcp_t *sock_tcp_new(void);
-extern void sock_tcp_destroy(sock_tcp_t *p);
-extern sock_tcp_t *sock_tcp_bind(char *addresss, int port);
-extern sock_tcp_t *sock_tcp_accept(sock_tcp_t *p);
-extern void sock_tcp_get_ip(sock_tcp_t *p, char *str_ip, int len);
-extern int sock_tcp_get_port(sock_tcp_t *p);
-extern sock_tcp_t *sock_tcp_connect(char *ip, int port);
-extern int sock_tcp_disable_nagle(sock_tcp_t *p);
-extern int sock_tcp_set_non_block(sock_tcp_t *p);
-extern int sock_tcp_read(sock_tcp_t *p, void *address, int len);
-extern int sock_tcp_write(sock_tcp_t *p, void *address, int len);
-extern void sock_tcp_close(sock_tcp_t *p);
-
-#endif /* MY_TCP_H */
diff --git a/src/net/udp.c b/src/net/udp.c
deleted file mode 100644
index 1771222..0000000
--- a/src/net/udp.c
+++ /dev/null
@@ -1,328 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef __WIN32__
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#else
-#include <windows.h>
-#include <wininet.h>
-#endif
-
-#include <unistd.h>
-#include <assert.h>
-#include <fcntl.h>
-
-#include "main.h"
-#include "net_multiplayer.h"
-
-#include "udp.h"
-#include "dns.h"
-
-#define BUFSIZE 1000
-
-static int getProto(char *str)
-{
- if (strstr(str, ".") != NULL)
- return PROTO_UDPv4;
- if (strstr(str, ":") != NULL)
- return PROTO_UDPv6;
-
- fatal("Network protocol not detected");
- return -1;
-}
-
-sock_udp_t *sock_udp_new(void)
-{
- sock_udp_t *new;
-
- new = malloc(sizeof(sock_udp_t));
- memset(new, 0, sizeof(sock_udp_t));
-
- return new;
-}
-
-void sock_udp_destroy(sock_udp_t *p)
-{
- assert(p != NULL);
- free(p);
-}
-
-sock_udp_t *sock_udp_bind(char *address, int port)
-{
- sock_udp_t *new;
- int res = -1; /* no warnings */
-
- assert(port > 0 && port < 65535);
-
- new = sock_udp_new();
- new->proto = getProto(address);
-
- assert(new != NULL);
-
- if (new->proto == PROTO_UDPv4) {
- new->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_UDPv6) {
- new->sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
- }
-#endif
-
- if (new->sock < 0) {
- error("Unable to create UDP socket");
- sock_udp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- memset(&(new->sockAddr), 0, sizeof(new->sockAddr));
-
- if (new->proto == PROTO_UDPv4) {
- new->sockAddr.sin_family = AF_INET;
- new->sockAddr.sin_port = htons(port);
- new->sockAddr.sin_addr.s_addr = inet_addr(address);
-
- res = bind(new->sock, (struct sockaddr *) &(new->sockAddr), sizeof(new->sockAddr));
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_UDPv6) {
- new->sockAddr6.sin6_family = AF_INET6;
- new->sockAddr6.sin6_port = htons(port);
- inet_pton(AF_INET6, address, &(new->sockAddr6.sin6_addr));
-
- res = bind(new->sock, (struct sockaddr *) &(new->sockAddr6), sizeof(new->sockAddr6));
- }
-#endif
-
- if (res < 0) {
- error("Unable to bind UDP socket to [%s]:%d", address, port);
- sock_udp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- return new;
-}
-
-sock_udp_t *sock_udp_connect(char *address, int port)
-{
- sock_udp_t *new;
- char *domain;
-
- assert(address != NULL);
- assert(port > 0 && port < 65536);
-
- new = sock_udp_new();
- new->proto = getProto(address);
-
- assert(new != NULL);
-
- if (new->proto == PROTO_UDPv4) {
- new->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_UDPv6) {
- new->sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
- }
-#endif
-
- if (new->sock < 0) {
- error("Unable to create UDP socket for connecting");
- sock_udp_destroy(new);
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return NULL;
- }
-
- domain = dns_resolv(address);
-
- if (domain) {
- address = domain;
- }
-
- memset(&(new->sockAddr), 0, sizeof(new->sockAddr));
-
- if (new->proto == PROTO_UDPv4) {
- new->sockAddr.sin_family = AF_INET;
- new->sockAddr.sin_port = htons(port);
- new->sockAddr.sin_addr.s_addr = inet_addr(address);
- }
-#ifdef SUPPORT_IPv6
- if (new->proto == PROTO_UDPv6) {
- new->sockAddr6.sin6_family = AF_INET6;
- new->sockAddr6.sin6_port = htons(port);
- inet_pton(AF_INET6, address, &(new->sockAddr6.sin6_addr));
- }
-#endif
- if (domain) {
- free(domain);
- }
-
- return new;
-}
-
-int sock_udp_set_non_block(sock_udp_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) {
- return -1;
- }
-#else
- unsigned long arg = 1;
- /* operation is FIONBIO; parameter is a pointer on non-zero number */
- if (ioctlsocket(p->sock, FIONBIO, &arg) == SOCKET_ERROR) {
- WSACleanup();
- return -1;
- }
-#endif
- return 0;
-}
-
-int sock_udp_read(sock_udp_t *src, sock_udp_t *dst, void *address, int len)
-{
- int addrlen;
- int size = -1; /* no warnings */
-
- assert(src != NULL);
- assert(dst != NULL);
- assert(address != NULL);
-
- if (src->proto == PROTO_UDPv4) {
- addrlen = sizeof(src->sockAddr);
-
-#ifndef __WIN32
- size = recvfrom(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr, (socklen_t *) &addrlen);
-#else
- size = recvfrom(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr, (int *) &addrlen);
-#endif
- }
-#ifdef SUPPORT_IPv6
- if (src->proto == PROTO_UDPv6) {
- addrlen = sizeof(src->sockAddr6);
-
- size = recvfrom(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr6, (socklen_t *) &addrlen);
- }
-#endif
-
- dst->sock = src->sock;
- dst->proto = src->proto;
-
- if (size < 0) {
- char str_ip[STR_IP_SIZE];
-
- sock_udp_get_ip(dst, str_ip, STR_IP_SIZE);
-
- error("Unable to read from UDP socket [%s]:%d (read %d bytes)", str_ip, sock_udp_get_port(dst), size);
-
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return -1;
- }
-
- return size;
-}
-
-int sock_udp_write(sock_udp_t *src, sock_udp_t *dst, void *address, int len)
-{
- int addrlen;
- int size = -1; /* no warnings */
-
- assert(src != NULL);
- assert(dst != NULL);
- assert(address != NULL);
-
- if (src->proto == PROTO_UDPv4) {
- addrlen = sizeof(src->sockAddr);
-
- size = sendto(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr, addrlen);
- }
-#ifdef SUPPORT_IPv6
- if (src->proto == PROTO_UDPv6) {
- addrlen = sizeof(src->sockAddr6);
-
- size = sendto(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr6, addrlen);
- }
-#endif
-
- if (size < 0) {
- char str_ip[STR_IP_SIZE];
-
- sock_udp_get_ip(dst, str_ip, STR_IP_SIZE);
-
- error("Unable to write to socket [%s]:%d with protocol %d (written %d bytes)", str_ip, sock_udp_get_port(dst), dst->proto, size);
-
-#ifdef __WIN32__
- WSACleanup();
-#endif
- return -1;
- }
-
- return size;
-}
-
-void sock_udp_get_ip(sock_udp_t *p, char *str_ip, int len)
-{
- assert(p != NULL);
- assert(str_ip != NULL);
-
-
- if (p->proto == PROTO_UDPv4) {
-#ifndef __WIN32__
- inet_ntop(AF_INET, &(p->sockAddr.sin_addr), str_ip, len);
-#else
- strcpy(str_ip, inet_ntoa(p->sockAddr.sin_addr));
-#endif
- }
-#ifdef SUPPORT_IPv6
- if (p->proto == PROTO_UDPv6) {
- inet_ntop(AF_INET6, &(p->sockAddr6.sin6_addr), str_ip, len);
- }
-#endif
-}
-
-int sock_udp_get_port(sock_udp_t *p)
-{
- assert(p != NULL);
-
- if (p->proto == PROTO_UDPv4) {
- return htons(p->sockAddr.sin_port);
- }
-#ifdef SUPPORT_IPv6
- if (p->proto == PROTO_UDPv6) {
- return htons(p->sockAddr6.sin6_port);
- }
-#endif
-
- fatal("Bad IP protocol");
-
- return -1;
-}
-
-void sock_udp_close(sock_udp_t *p)
-{
- assert(p != NULL);
-
-#ifndef __WIN32__
- close(p->sock);
-#else
- closesocket(p->sock);
- /*WSACleanup(); -- when the socket is closed correctly, it is not needed to do a cleanup */
-#endif
- sock_udp_destroy(p);
-}
diff --git a/src/net/udp.h b/src/net/udp.h
deleted file mode 100644
index 0e54a9c..0000000
--- a/src/net/udp.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef MY_UDP_H
-#define MY_UDP_H
-
-#ifndef __WIN32__
-#include <netinet/in.h>
-#else
-#include <windows.h>
-#include <wininet.h>
-#include <winsock.h>
-#endif
-
-typedef struct struct_sock_udp_t {
-#ifndef __WIN32__
- int sock;
-#else
- SOCKET sock;
-#endif
- int proto;
-
-#ifdef SUPPORT_IPv6
- struct sockaddr_in6 sockAddr6;
-#endif
- struct sockaddr_in sockAddr;
-} sock_udp_t;
-
-extern sock_udp_t *sock_udp_new(void);
-extern void sock_udp_destroy(sock_udp_t *p);
-extern sock_udp_t *sock_udp_bind(char *address, int port);
-extern sock_udp_t *sock_udp_connect(char *address, int port);
-extern int sock_udp_set_non_block(sock_udp_t *p);
-extern int sock_udp_read(sock_udp_t *src, sock_udp_t *dst, void *address, int len);
-extern int sock_udp_write(sock_udp_t *src, sock_udp_t *dst, void *address, int len);
-extern void sock_udp_get_ip(sock_udp_t *p, char *str_ip, int len);
-extern int sock_udp_get_port(sock_udp_t *p);
-extern void sock_udp_close(sock_udp_t *p);
-
-#endif /* MY_UDP_H */