From 826a768318d071200b289ed3a93ee409759dbae3 Mon Sep 17 00:00:00 2001 From: oroborus Date: Tue, 24 Jun 2008 15:56:36 +0000 Subject: - podpora IPv6 - game server je schopny obsluhovat clientov zo sieti IPv4 a IPv6 sucastne - hrac si moze zvolit v nastaveniach, ci che pouzivat IPv4 alebo IPv6 - odkolnenie od SDL_net ( nepodporuje IPv6 ) // ale v kode este podpora SDL_Net je git-svn-id: http://opensvn.csie.org/tuxanci_ng@70 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- include/client.h | 8 +------- include/net_multiplayer.h | 6 +++++- include/screen_gameType.h | 1 + include/server.h | 6 +++++- include/string_length.h | 2 +- include/udp.h | 16 +++++++++++----- 6 files changed, 24 insertions(+), 15 deletions(-) (limited to 'include') diff --git a/include/client.h b/include/client.h index fe28eed..cd8c4c4 100644 --- a/include/client.h +++ b/include/client.h @@ -12,14 +12,8 @@ #endif -#ifdef SUPPORT_NET_UNIX_TCP -extern int initTcpClient(char *ip, int port); -extern void selectClientTcpSocket(); -extern void quitTcpClient(); -#endif - #ifdef SUPPORT_NET_UNIX_UDP -extern int initUdpClient(char *ip, int port); +extern int initUdpClient(char *ip, int port, int proto); extern void eventPingServer(); extern void selectClientUdpSocket(); extern void refreshPingServerAlive(); diff --git a/include/net_multiplayer.h b/include/net_multiplayer.h index 0127de8..2da7dea 100644 --- a/include/net_multiplayer.h +++ b/include/net_multiplayer.h @@ -23,7 +23,11 @@ #define LIMIT_BUFFER 10240 -extern int initNetMuliplayer(int type, char *ip, int port); +#ifdef PUBLIC_SERVER +extern int initNetMulitplayerPublicServer(char *ip4, int port4, char *ip6, int port6); +#endif + +extern int initNetMuliplayer(int type, char *ip, int port, int proto); extern int getNetTypeGame(); extern void eventNetMultiplayer(); extern void quitNetMultiplayer(); diff --git a/include/screen_gameType.h b/include/screen_gameType.h index dc25d48..1780e1c 100644 --- a/include/screen_gameType.h +++ b/include/screen_gameType.h @@ -9,6 +9,7 @@ extern void initScreenGameType(); extern int getSettingGameType(); extern char* getSettingIP(); extern int getSettingPort(); +extern int getSettingProto(); extern void quitScreenGameType(); #endif diff --git a/include/server.h b/include/server.h index 178dc34..247b836 100644 --- a/include/server.h +++ b/include/server.h @@ -51,9 +51,13 @@ typedef struct client_struct buffer_t *buffer; } client_t; +#ifdef PUBLIC_SERVER +extern int initUdpPublicServer(char *ip4, int port4, char *ip6, int port6); +#endif #ifdef SUPPORT_NET_UNIX_UDP -extern int initUdpServer(char *ip, int port); +extern int initUdpServer(char *ip, int port, int proto); +extern int initUdpServerMultiProto(char *ip4, char *ip6, int port4, int port6); extern client_t* newUdpClient(sock_udp_t *sock_udp); extern void selectServerUdpSocket(); extern void quitUdpServer(); diff --git a/include/string_length.h b/include/string_length.h index 243cb69..b1712ee 100644 --- a/include/string_length.h +++ b/include/string_length.h @@ -11,6 +11,6 @@ #define STR_NAME_SIZE 32 #define STR_PATH_SIZE 4096 #define STR_FILE_NAME_SIZE 256 -#define STR_IP_SIZE 24 +#define STR_IP_SIZE 64 #endif diff --git a/include/udp.h b/include/udp.h index ce89c53..29f383b 100644 --- a/include/udp.h +++ b/include/udp.h @@ -5,21 +5,27 @@ #define MY_UDP -#include "main.h" +#define SUPPORT_IPv6 + +#define PROTO_UDPv4 0 +#define PROTO_UDPv6 1 typedef struct struct_sock_udp_t { int sock; + int proto; + + struct sockaddr_in6 sockAddr6; struct sockaddr_in sockAddr; } sock_udp_t; -extern sock_udp_t* newSockUdp(); +extern sock_udp_t* newSockUdp(int proto); extern void destroySockUdp(sock_udp_t *p); -extern sock_udp_t* bindUdpSocket(char *address, int port); -extern sock_udp_t* connectUdpSocket(char *address, int port); +extern sock_udp_t* bindUdpSocket(char *address, int port, int proto); +extern sock_udp_t* connectUdpSocket(char *address, int port, int proto); extern int readUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len); extern int writeUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len); -extern void getSockUdpIp(sock_udp_t *p, char *str_ip); +extern void getSockUdpIp(sock_udp_t *p, char *str_ip, int len); extern int getSockUdpPort(sock_udp_t *p); extern void closeUdpSocket(sock_udp_t *p); -- cgit v1.2.3