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
00033
00034
00035
00036 #if !defined(AFX_TCPSOCKETASYNC_H__1D78325D_C154_4B21_97E5_320394FD47EF__INCLUDED_)
00037 #define AFX_TCPSOCKETASYNC_H__1D78325D_C154_4B21_97E5_320394FD47EF__INCLUDED_
00038
00039 #if _MSC_VER > 1000
00040 #pragma once
00041 #endif // _MSC_VER > 1000
00042
00043 #include "TCPSocket.h"
00044 #include "AsyncSocket.h"
00045
00046 KOMODIA_NAMESPACE_START
00047
00048 #define CONNECTION_TIMEOUT 1
00049
00050 class CTCPSocketAsync : public CTCPSocket,
00051 public CAsyncSocket
00052 {
00053 public:
00054
00055 BOOL SetConnectionTimeout(unsigned long ulMS);
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 virtual int Send(const char* pBuffer,
00066 unsigned long ulBufferLength);
00067
00068
00069 virtual BOOL Close();
00070
00071
00072
00073
00074
00075
00076
00077 virtual int Receive(char* pBuffer,
00078 unsigned long ulBufferLength);
00079
00080
00081
00082
00083
00084
00085 virtual BOOL Connect(IP aDestinationAddress,
00086 unsigned short usDestinationPort,
00087 BOOL bDisableAsync=FALSE,
00088 BOOL bForceErrorEvent=FALSE);
00089 virtual BOOL Connect(const std::string& rDestinationAddress,
00090 unsigned short usDestinationPort,
00091 BOOL bDisableAsync=FALSE,
00092 BOOL bForceErrorEvent=FALSE);
00093
00094
00095 virtual BOOL Connect(unsigned short usSourcePort,
00096 IP aDestinationAddress,
00097 unsigned short usDestinationPort,
00098 BOOL bDisableAsync=FALSE,
00099 BOOL bForceErrorEvent=FALSE);
00100 virtual BOOL Connect(unsigned short usSourcePort,
00101 const std::string& rDestinationAddress,
00102 unsigned short usDestinationPort,
00103 BOOL bDisableAsync=FALSE,
00104 BOOL bForceErrorEvent=FALSE);
00105
00106
00107 virtual BOOL Listen(unsigned long ulBackLog=5);
00108
00109
00110 virtual BOOL Create();
00111
00112
00113 CTCPSocketAsync(BOOL bRawSocket);
00114 virtual ~CTCPSocketAsync();
00115 protected:
00116
00117 virtual int SendNoAdd(const char* pBuffer,
00118 unsigned long ulBufferLength);
00119
00120
00121 virtual BOOL IsAsyncClass()const;
00122
00123
00124 virtual BOOL SetAsync();
00125
00126
00127 virtual SOCKET GetAsyncHandle()const;
00128
00129
00130 virtual BOOL SendBlockedBuffer(const CBlockedBuffer::CBlockedData& rData);
00131 private:
00132
00133 CTCPSocketAsync(const CTCPSocketAsync& rSocket);
00134
00135
00136 virtual BOOL SocketConnected(int iErrorCode);
00137
00138
00139 virtual BOOL SocketClosed(int iErrorCode);
00140
00141
00142 virtual BOOL SocketWrite(int iErrorCode);
00143
00144
00145 virtual void Accepted();
00146
00147
00148 virtual void SystemTimeout();
00149
00150
00151 virtual void BeforeAccept();
00152
00153
00154 BOOL m_bDisabledConnect;
00155
00156
00157 unsigned long m_ulTimeout;
00158 };
00159
00160 KOMODIA_NAMESPACE_END
00161
00162 #endif // !defined(AFX_TCPSOCKETASYNC_H__1D78325D_C154_4B21_97E5_320394FD47EF__INCLUDED_)