00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
#ifndef _TCPIPCommConnect_h
00033
#define _TCPIPCommConnect_h
00034
00035
00036
00037
#include <winsock.h>
00038
#include "TraceObject.h"
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00057 class CTCPIPCommConnect :
virtual public CTraceObject
00058 {
00059
00060
public:
00061
00067
CTCPIPCommConnect();
00068
00070
virtual ~CTCPIPCommConnect();
00071
00072
00073
00074
00075
00076
00084
void Initialize(
const short TCPport,
00085
const char *pIPAddress,
00086
const bool PassiveConnection =
false );
00087
00093
bool ConnectRequest( SOCKET PassiveSocket );
00094
00095
00101
bool DisconnectRequest(
void );
00102
00103
00109
int GetLastSocketError(
void )
const;
00110
00116
bool Terminating(
void )
const;
00117
00123 SOCKET
GetSocket(
void );
00124
00130
unsigned long GetRemoteIPAddr (
void );
00131
00137
struct in_addr ConvToInAddr( unsigned long nIPAddress ) const;
00138
00142
const SOCKADDR_IN &
GetRemoteAddr(
void );
00143
00150 SOCKADDR_IN
ConvTCPAddrToSocketAddr(
const short TCPport,
00151
const char *pIPAddr );
00152
00153
00154
00155
protected:
00156
00157
00158
00159
00160
00166
virtual void ConInd(
void ) = 0;
00167
00173
virtual void DisInd(
void ) = 0;
00174
00175
00176
00177
00178
private:
00179
00186
bool AwaitConnection(
void );
00187
00194
bool EstablishConnection(
void );
00195
00196
00197
00198
00199
00205
static void ConnectThread(
CTCPIPCommConnect *pClass );
00206
00207
00208
00209
00210 SOCKET m_Socket;
00211 SOCKET m_PassiveSocket;
00212 SOCKADDR_IN m_RemoteAddr;
00213
bool m_PassiveConnection;
00214
int m_LastSocketError;
00215
00216 DWORD m_ThreadID;
00217
00218 HANDLE m_ThreadHandle;
00219 HANDLE m_hEventTerminate;
00220 HANDLE m_hEventTerminateFinished;
00221 HANDLE m_hEventConnecting;
00222
00223
unsigned long m_RemoteIPAddr;
00224
00225
bool m_Terminating;
00226 };
00227
00228
00229
00230
00231
00232
00233
00234 inline int CTCPIPCommConnect::GetLastSocketError(
void )
const
00235
{
00236
return m_LastSocketError;
00237 }
00238
00239
00240 inline bool CTCPIPCommConnect::Terminating(
void )
const
00241
{
00242
return m_Terminating;
00243 }
00244
00245
00246
00247 inline SOCKET
CTCPIPCommConnect::GetSocket(
void )
00248 {
00249
return m_Socket;
00250 }
00251
00252
00253
00254 inline unsigned long CTCPIPCommConnect::GetRemoteIPAddr(
void )
00255 {
00256
return m_RemoteIPAddr;
00257 }
00258
00259 inline const SOCKADDR_IN &
CTCPIPCommConnect::GetRemoteAddr(
void )
00260 {
00261
return m_RemoteAddr;
00262 }
00263
00264
00265
#endif // _TCPIPCommConnect_h