diff options
author | Simon Howard | 2005-12-29 17:48:25 +0000 |
---|---|---|
committer | Simon Howard | 2005-12-29 17:48:25 +0000 |
commit | 37f611e199bd7a300def37c84f7fdb205534ca19 (patch) | |
tree | 56d76a54fdf97867efdaf6d55ace2f4fea98aaf5 /src/net_client.c | |
parent | 68e5d0979584d614868f790e2dcf4e5e186415b0 (diff) | |
download | chocolate-doom-37f611e199bd7a300def37c84f7fdb205534ca19.tar.gz chocolate-doom-37f611e199bd7a300def37c84f7fdb205534ca19.tar.bz2 chocolate-doom-37f611e199bd7a300def37c84f7fdb205534ca19.zip |
Add initial client/server connect code. Reorganise sources list in
Makefile.am.
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 232
Diffstat (limited to 'src/net_client.c')
-rw-r--r-- | src/net_client.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/net_client.c b/src/net_client.c new file mode 100644 index 00000000..2abc5acf --- /dev/null +++ b/src/net_client.c @@ -0,0 +1,98 @@ +// Emacs style mode select -*- C++ -*- +//----------------------------------------------------------------------------- +// +// $Id: net_client.c 232 2005-12-29 17:48:25Z fraggle $ +// +// Copyright(C) 2005 Simon Howard +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA. +// +// $Log$ +// Revision 1.1 2005/12/29 17:48:25 fraggle +// Add initial client/server connect code. Reorganise sources list in +// Makefile.am. +// +// +// Network client code +// + +#include "doomdef.h" +#include "doomstat.h" +#include "i_system.h" +#include "net_client.h" +#include "net_defs.h" +#include "net_io.h" +#include "net_packet.h" +#include "net_server.h" + +static net_addr_t *server_addr; +static net_context_t *client_context; + +// connect to a server + +boolean NET_ClientConnect(net_addr_t *addr) +{ + net_packet_t *packet; + int last_send_time = -1; + + server_addr = addr; + + // create a new network I/O context and add just the + // necessary module + + client_context = NET_NewContext(); + + // initialise module for client mode + + if (!addr->module->InitClient()) + { + return false; + } + + NET_AddModule(client_context, addr->module); + + // try to connect + + // construct a SYN packet + + packet = NET_NewPacket(10); + + // packet type + + NET_WriteInt16(packet, NET_PACKET_TYPE_SYN); + + // magic number + + NET_WriteInt32(packet, NET_MAGIC_NUMBER); + + while (true) + { + if (I_GetTime() - last_send_time > 35) + { + // resend packet + + NET_SendPacket(addr, packet); + last_send_time = I_GetTime(); + } + + // run the server, just incase we are doing a loopback + // connect + + NET_ServerRun(); + } +} + + |