Changeset 587 for Daodan/MSVC


Ignore:
Timestamp:
Feb 7, 2011, 6:34:47 AM (14 years ago)
Author:
gumby
Message:
 
Location:
Daodan/MSVC
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • Daodan/MSVC/Flatline.c

    r586 r587  
    592592bool FlatlineInitialize()
    593593{
    594        
    595594        memset( Players, 0, sizeof( player_info ) * MAX_PLAYERS );
    596595        memset( PlayerList, 0, 4 * MAX_PLAYERS );
  • Daodan/MSVC/Flatline.h

    r586 r587  
    3838#include "Flatline_Packet.h"
    3939
    40 #define pad1_size (sizeof(int64_t) - sizeof(short))
    41 #define pad2_size (128 - (sizeof(short) + pad1_size + sizeof(int64_t)))
    42 
    43 #define breakpoint asm("int3")
    44 
    45 typedef struct {
    46         short ss_family;
    47         char pad1[pad1_size];
    48         uint64_t pad64;
    49         char pad2[pad2_size];
    50 } sockaddr_storage;
    51 
    52 typedef struct sockaddr sockaddr;
    53 typedef struct sockaddr_in sockaddr_in;
    54 typedef sockaddr_storage sockaddr_in6;
    55 
    56 bool NetUDPServer_Listen(uint16_t port, bool (*packet_callback)(char* data, int datalen, int from));
    57 bool NetUDPServer_Send(sockaddr* address, char* data, int datalen);
    58 
    59 int NetUDPSocket_Create(uint16_t port);
    60 int NetUDPSocket_Send(int socket, const sockaddr* address, const char* data, int datalen);
    61 void NetUDPSocket_Close(int sock);
    62 bool NetUDPSocket_Recieve(int socket, sockaddr_storage* address, char* data, uint16_t* datalen);
     40
     41//#define breakpoint asm("int3")
     42
     43
     44#include "Flatline_Net.h"
    6345
    6446DWORD WINAPI StartServer(void* lol);
     
    167149typedef struct {
    168150        //int   FLATLINE;
    169         int             id;
    170         int             packet_index;
     151        short   signature;
     152        short   id;
     153        int             size;
     154        //int           packet_index;
    171155        union   
    172156        {
  • Daodan/MSVC/Flatline_BSL.c

    r586 r587  
    77#include "Flatline.h"
    88#include "Flatline_Server.h"
     9#include "Mariusnet_Public.h"
    910bool server_started = 0;
    1011bool client_connected = 0;
     
    7576        if(     NetPlatform_Initalize()) {
    7677                static flatline_packet packet;
    77                 sock = NetUDPSocket_Create(27777);
     78                memset(&client_address, 0, sizeof(sockaddr_in));
     79                sock = NetUDPSocket_Create(27777, &client_address);
    7880                address.sin_family = AF_INET; address.sin_port = htons(27777); address.sin_addr.S_un.S_addr = inet_addr(args[0].value_str32 ); 
    7981                //address.sin_family = AF_INET; address.sin_port = htons(27777); address.sin_addr.S_un.S_addr = inet_addr("192.168.0.1");       
     
    225227        return 0;
    226228}
     229
     230uint16_t ONICALL mnet_login(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret)
     231{
     232        MSNet_Login(args[0].value_str32, args[1].value_str32);
     233        return 0;
     234}
     235
    227236void SLrFlatline_Initialize()
    228237{
     
    242251        SLrScript_Command_Register_Void("con", "Activates a console", "con:int", con);
    243252        SLrScript_Command_Register_Void("ping", "pong!", "", ping);
    244 }
     253
     254        SLrScript_Command_Register_Void("login", "logs into mariusnet", "username:string password:string", mnet_login);
     255}
  • Daodan/MSVC/Flatline_Net.c

    r584 r587  
    6565sockaddr_in client_address;
    6666
    67 int NetUDPSocket_Create(uint16_t port)
     67int NetUDPSocket_Create(uint16_t port, sockaddr_in* address)
    6868{
    6969        int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    70         sockaddr_in address;   
     70
    7171                unsigned long nonBlocking = 1;
    7272        if (sock < 0)
     
    7777       
    7878
    79         memset(&client_address, 0, sizeof(sockaddr_in));
    80         address.sin_family = AF_INET;
    81         address.sin_addr.s_addr = htonl(INADDR_ANY);
    82         address.sin_port =  htons(port);
    83        
    84         if (bind(sock, (sockaddr*)&address, sizeof(sockaddr_in)) < 0)
     79//      memset(&client_address, 0, sizeof(sockaddr_in));
     80        address->sin_family = AF_INET;
     81        address->sin_addr.s_addr = htonl(INADDR_ANY);
     82        address->sin_port =  htons(port);
     83       
     84        if (bind(sock, (sockaddr*)address, sizeof(sockaddr_in)) < 0)
    8585        {
    8686                DDrConsole_PrintF("could not bind port %d", port);
     
    9595        }
    9696        client_sock = sock;
    97         client_address = address;
    9897        return sock;
    9998}
    10099
    101 int NetTCPSocket_Create(uint16_t port)
     100int NetTCPSocket_Create(uint16_t port, sockaddr_in* address)
    102101{
    103102        int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    104         sockaddr_in address;
    105                 unsigned long nonBlocking = 1;
    106 
     103
     104                unsigned long nonBlocking = 0;
    107105        if (sock < 0)
    108106        {
     
    112110       
    113111
    114         memset(&client_address, 0, sizeof(sockaddr_in));
    115         address.sin_family = AF_INET;
    116         address.sin_addr.s_addr = htonl(INADDR_ANY);
    117         address.sin_port =  htons(port);
    118        
    119         if (bind(sock, (sockaddr*)&address, sizeof(sockaddr_in)) < 0)
     112//      memset(&client_address, 0, sizeof(sockaddr_in));
     113        //address->sin_family = AF_INET;
     114        //address->sin_addr.s_addr = INADDR_ANY;
     115        //address->sin_port =  htons(port);
     116        /*
     117        if (bind(sock, (sockaddr*)address, sizeof(sockaddr_in)) < 0)
    120118        {
    121119                DDrConsole_PrintF("could not bind port %d", port);
     
    123121        }
    124122       
    125 
     123        /*
    126124        if (ioctlsocket(sock, FIONBIO, &nonBlocking))
    127125        {
    128126                DDrConsole_PrintF("failed to set non-blocking socket");
    129127                return false;
    130         }
    131         client_sock = sock;
    132         client_address = address;
     128        }*/
     129        //client_sock = sock;
    133130        return sock;
    134131}
    135 
    136132
    137133void NetUDPSocket_Close(int socket)
     
    144140        //currently only protects against duplicate packets.
    145141        int addr_size;
    146 #ifdef TRACK_PACKETS
     142        int sent_bytes;
     143#if 0 //#ifdef TRACK_PACKETS
    147144        static uint32_t packet_index = 0;
    148145        packet_index = (packet_index + 1);
     
    161158                        addr_size = sizeof(sockaddr_storage);
    162159        }
    163         return sendto(socket, data, datalen, 0, address, addr_size);
     160        sent_bytes = sendto(socket, data, datalen, 0, address, addr_size);
     161
     162        if(sent_bytes == SOCKET_ERROR) {
     163                NetCatchError();
     164        }
     165
     166        return sent_bytes;
    164167}
    165168
     
    182185                        return false;
    183186                }
    184         }       
    185         /*
    186 #ifdef TRACK_PACKETS
    187         if(client_connected && !server_started) {
    188                 uint32_t index_mkr = ((flatline_packet*)(data))->packet_index;
    189                 //fancy way of checking if index_mkr is on one side of the max size of an int and last_packet is on the other
    190                 if( ((index_mkr - last_packet < 0x80000000) && (index_mkr > last_packet))
    191                 //if it is, subtract half the size of an int from each. ^_^
    192                         || ((index_mkr - 0x80000000) > (last_packet - 0x80000000) ) )
    193                 {
    194                         return false;
    195                 }
    196                 else {
    197                         last_packet = index_mkr;
    198                 }
    199         }
    200        
    201 #endif
    202         */
    203 
     187        }
    204188        *datalen = msg_size;                           
    205189        return true;
    206190       
    207191}
    208 
    209 
    210192
    211193DWORD WINAPI StartServer(void* lol){
  • Daodan/MSVC/Flatline_Win32.c

    r567 r587  
    11#include "Flatline.h"
    2 
     2bool WSAStarted = 0;
    33bool NetPlatform_Initalize()
    44{
    55        WSADATA wsaData;
    6        
    7         if (WSAStartup(MAKEWORD(2, 2), &wsaData))
     6        if(!WSAStarted)
    87        {
    9                 DDrConsole_PrintF("WSA initalization failed");
    10                 return false;
     8                if (WSAStartup(MAKEWORD(2, 2), &wsaData))
     9                {
     10                        DDrConsole_PrintF("WSA initalization failed");
     11                        return false;
     12                }
     13                DDrConsole_PrintF("net started using WSA version %d.%d", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
    1114        }
    12         DDrConsole_PrintF("net started using WSA version %d.%d", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
    1315        return true;
    1416}
Note: See TracChangeset for help on using the changeset viewer.