00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "NetConnect.h"
00012
00013 unsigned int NetConnect::idMax = 0;
00014
00015 NetConnect::NetConnect(unsigned int iCrypt)
00016 {
00017 id = ++idMax;
00018 sock = 0;
00019 ip = NET_DEF_IP;
00020 port = NET_DEF_PORT;
00021 bufferSize = 0;
00022 *buffer = '\0';
00023 #if USE_SSL == 1
00024 sslFD = NULL;
00025 #endif
00026 crypt = iCrypt;
00027 }
00028
00029 NetConnect::~NetConnect()
00030 {
00031
00032 }
00033
00034 void NetConnect::BinSend(const char *pBuffer, unsigned int iSize)
00035 {
00036 unsigned int sizeSend = 0;
00037 TRY
00038
00039 if(sock <= 0)
00040 THROW(ERROR_C_CONNECT)
00041
00042 #if USE_SSL == 1
00043 if(crypt == NET_T_SSL)
00044 sizeSend = SSL_write(sslFD, pBuffer, iSize);
00045 else
00046 #endif
00047 sizeSend = send(sock, pBuffer, iSize, 0);
00048
00049 if(sizeSend != iSize)
00050 THROW(ERROR_C_SEND)
00051
00052 CATCH
00053 }
00054
00055 void NetConnect::Send(const char *pBuffer, ...)
00056 {
00057 char temp[NET_BUFFER];
00058 va_list args;
00059
00060 va_start(args, pBuffer);
00061 vsprintf(temp, pBuffer, args);
00062 va_end(args);
00063
00064 BinSend(temp, strlen(temp));
00065 }
00066
00067 void NetConnect::Receive()
00068 {
00069 unsigned int sizeRecv;
00070 TRY
00071
00072 if(sock <= 0)
00073 THROW(ERROR_C_CONNECT)
00074
00075 memset(buffer, 0, NET_BUFFER);
00076
00077 #if USE_SSL == 1
00078 if(crypt == NET_T_SSL)
00079 sizeRecv = SSL_read(sslFD, buffer, NET_BUFFER);
00080 else
00081 #endif
00082 sizeRecv = recv(sock, buffer, NET_BUFFER, 0);
00083
00084 if(sizeRecv <= 0)
00085 THROW(ERROR_C_RECEIVE)
00086
00087 bufferSize = sizeRecv;
00088
00089 CATCH
00090 }