--- Daodan/Flatline/src/Flatline.h 2009/08/24 11:32:06 459 +++ Daodan/Flatline/src/Flatline.h 2009/11/29 08:20:43 483 @@ -8,6 +8,8 @@ #include #include +#define thread __thread + #ifdef WIN32 #include #include "Flatline_Win32.h" @@ -26,14 +28,43 @@ #define ioctlsocket ioctl #endif +#define pad1_size (sizeof(int64_t) - sizeof(short)) +#define pad2_size (128 - (sizeof(short) + pad1_size + sizeof(int64_t))) + +typedef struct { + short ss_family; + char pad1[pad1_size]; + uint64_t pad64; + char pad2[pad2_size]; +} sockaddr_storage; + typedef struct sockaddr sockaddr; typedef struct sockaddr_in sockaddr_in; +typedef sockaddr_storage sockaddr_in6; -bool Net_Listen(uint16_t port, bool (*packet_callback)(char* data, int datalen, int from)); +bool NetUDPServer_Listen(uint16_t port, bool (*packet_callback)(char* data, int datalen, int from)); +bool NetUDPServer_Send(sockaddr* address, char* data, int datalen); int NetUDPSocket_Create(uint16_t port); -bool NetUDPSocket_Send(int socket, int ip, uint16_t port, char* data, int datalen); +bool NetUDPSocket_Send(int socket, const sockaddr* address, const char* data, int datalen); void NetUDPSocket_Close(int sock); -bool FLrListen_PacketCallback(char* data, int datalen, int from); -bool FLrListen_Run(); +typedef struct { + char signature[8]; + uint16_t protocol_version; + char data[0]; +} handshake_packet; + +typedef struct { + char country[2]; + char name[256]; +} connect_send; //signature="CONNECT\0" + +typedef struct { + char name[256]; + uint32_t numplayers; //signature="STATUS\0\0" +} status_recv; + + +bool FLrServer_PacketCallback(char* data, int datalen, int from); +bool FLrServer_Run();