| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** 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 3 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, see <http://www.gnu.org/licenses/>.
- */
- //
- // Filename: netutil.h
- // Project: wwnet
- // Author: Tom Spencer-Smith
- // Date: June 1998
- // Description:
- //
- //-----------------------------------------------------------------------------
- #if defined(_MSV_VER)
- #pragma once
- #endif
- #ifndef NETUTIL_H
- #define NETUTIL_H
- #include "win.h"
- #include <winsock.h>
- #include "bittype.h"
- class cPacket;
- #define WOULD_BLOCK(exp) cNetUtil::Would_Block(__FILE__, __LINE__, exp)
- #define SEND_RESOURCE_FAILURE(exp) cNetUtil::Send_Resource_Failure(__FILE__, __LINE__, exp)
- #define WSA_ERROR {cNetUtil::Wsa_Error(__FILE__, __LINE__);}
- #define WSA_CHECK(exp) {if ((exp) == SOCKET_ERROR) {cNetUtil::Wsa_Error(__FILE__, __LINE__);}}
- typedef void (*LanPacketHandlerCallback)(cPacket & packet);
- enum {
- MIN_SERVER_PORT = 1024, //1025,
- MAX_SERVER_PORT = 65535 //5000
- };
- class cNetUtil
- {
- public:
- static void Wsa_Init();
- static bool Protocol_Init(bool is_internet);
- static bool Get_Local_Address(LPSOCKADDR_IN p_local_address);
- static void Wsa_Error(LPCSTR sFile, unsigned uLine);
- static bool Is_Same_Address(LPSOCKADDR_IN p_address1, const SOCKADDR_IN* p_address2);
- static bool Would_Block(LPCSTR sFile, unsigned uLine, int ret_code);
- static bool Send_Resource_Failure(LPCSTR sFile, unsigned uLine, int ret_code);
- static void Address_To_String(LPSOCKADDR_IN p_address, char * str, UINT len,
- USHORT & port);
- static LPCSTR Address_To_String(ULONG ip_address);
- static void String_To_Address(LPSOCKADDR_IN p_address, LPCSTR str, USHORT port);
- static void Create_Unbound_Socket(SOCKET & sock);
- static bool Create_Bound_Socket(SOCKET & sock, USHORT port, SOCKADDR_IN & local_address);
- static void Close_Socket(SOCKET & sock);
- static void Create_Broadcast_Address(LPSOCKADDR_IN p_broadcast_address, USHORT port);
- static void Create_Local_Address(LPSOCKADDR_IN p_local_address, USHORT port);
- static void Broadcast(SOCKET & sock, USHORT port, cPacket & packet);
- static bool Is_Tcpip_Present();
- static void Lan_Servicing(SOCKET & sock, LanPacketHandlerCallback p_callback);
- static bool Is_Internet() {return IsInternet;}
- static void Set_Socket_Buffer_Sizes(SOCKET sock, int new_size = 10000);
- static UINT Get_Default_Resend_Timeout_Ms() {return DefaultResendTimeoutMs;}
- static const USHORT NETSTATS_SAMPLE_TIME_MS;
- static const USHORT KEEPALIVE_TIMEOUT_MS;
- static const USHORT MAX_RESENDS;
- static const USHORT MULTI_SENDS;
- static const USHORT RESEND_TIMEOUT_LAN_MS;
- static const USHORT RESEND_TIMEOUT_INTERNET_MS;
- static const ULONG CLIENT_CONNECTION_LOSS_TIMEOUT;
- static const ULONG SERVER_CONNECTION_LOSS_TIMEOUT;
- static const ULONG SERVER_CONNECTION_LOSS_TIMEOUT_LOADING_ALLOWANCE;
- static const char *Winsock_Error_Text(int error_code);
- private:
- static int Get_Local_Tcpip_Addresses(SOCKADDR_IN ip_address[], USHORT max_addresses);
- static bool IsInternet;
- static UINT DefaultResendTimeoutMs;
- static char WorkingAddressBuffer[300];
- };
- #endif // NETUTIL_H
- //static USHORT Get_Header_Bytes() {return HeaderBytes;}
- //static USHORT Get_Max_Packet_App_Data_Size() {return MaxPacketAppDataSize;}
- //static USHORT HeaderBytes;
- //static USHORT MaxPacketAppDataSize;
- //static const WORD WS_VERSION_REQD;
- //static int Get_Net_Stats_Sample_Time_Ms() {return NETSTATS_SAMPLE_TIME_MS;}
- //static int Get_Default_Multi_Sends() {return DefaultMultiSends;}
- //static int Get_Default_Max_Resends() {return DefaultMaxResends;}
- //static int Get_Default_Keepalive_Timeout_Ms() {return DefaultKeepaliveTimeoutMs;}
- //static int Get_Desired_Send_Buffer_Size_Bytes() {return DesiredSendBufferSizeBytes;}
- //static int Get_Desired_Receive_Buffer_Size_Bytes() {return DesiredReceiveBufferSizeBytes;}
- //static int Get_Default_Server_Port() {return DefaultServerPort;}
- //static int Get_Max_Receive_Time_Ms() {return MaxReceiveTimeMs;}
- //static float Get_Priority_Tolerance_Downwards() {return PriorityToleranceDownwards;}
- //static float Get_Priority_Tolerance_Upwards() {return PriorityToleranceUpwards;}
- //static float Get_Max_TP_Correction_Downwards() {return MaxTPCorrectionDownwards;}
- //static float Get_Max_TP_Correction_Upwards() {return MaxTPCorrectionUpwards;}
- //static float Get_Priority_Noise_Factor() {return PriorityNoiseFactor;}
- //static float Get_Initial_Threshold_Priority() {return InitialThresholdPriority;}
- //static float Get_Priority_Growth_Per_Second() {return PriorityGrowthPerSecond;}
- //static float Compute_Priority_Noise();
- //static int DefaultMultiSends; // Number of sends in a SEND_MULTI
- //static int DefaultMaxResends; // If you exceed this then the connection is regarded as broken
- //static int DefaultKeepaliveTimeoutMs;
- //static int DesiredSendBufferSizeBytes;
- //static int DesiredReceiveBufferSizeBytes;
- //static int DefaultServerPort;
- //static int MaxReceiveTimeMs;
- //static float PriorityToleranceDownwards;
- //static float PriorityToleranceUpwards;
- //static float MaxTPCorrectionDownwards;
- //static float MaxTPCorrectionUpwards;
- //static float PriorityNoiseFactor;
- //static float InitialThresholdPriority;
- //static float PriorityGrowthPerSecond;
- //static int Get_Default_Resend_Timeout_Lan_Ms() {return RESEND_TIMEOUT_LAN_MS;}
- //static int Get_Default_Resend_Timeout_Internet_Ms() {return RESEND_TIMEOUT_INTERNET_MS;}
- //static void Onetime_Init();
|