HostEnt hostEntry; WSASystem wsaSystem; Socket socket; String strHost("li.net"); winConsole.writeLine("Initializing sockets..."); if(!wsaSystem.isInitialized()){winConsole.writeLine("Cannot initialize sockets.");winConsole.read();return FALSE;} winConsole.writeLine("Socket initialization complete."); if(!wsaSystem.description().isNull())winConsole.writeLine(String("<")+wsaSystem.description()+String(">")); winConsole.writeLine("Opening socket..."); socket.openSocket(); if(!socket.isOkay()){winConsole.writeLine("Cannot open socket.");winConsole.read();return FALSE;} winConsole.writeLine("Open complete."); winConsole.writeLine(String("Trying ")+strHost+String(" ....")); InternetAddress internetAddress(strHost); if(!internetAddress.isZero()){if(!hostEntry.hostByAddress(internetAddress)){winConsole.writeLine(String("no DNS entry for ")+strHost);winConsole.read();return FALSE;}} else if(!hostEntry.hostByName(strHost)){winConsole.writeLine(String("no DNS entry for ")+strHost);winConsole.read();return FALSE;} winConsole.writeLine(String("connect...")+String("'")+hostEntry.hostName()+String("' (")+(String)(hostEntry.addresses())[0]+String(")")); socket.closeSocket(); winConsole.writeLine("Internet is available on this machine. :) Later Peach."); // else if(!hostEntry.hostByName(hostName)){message(String("no DNS entry for ")+hostName);return FALSE;} // message(String("connect...")+String("'")+hostEntry.hostName()+String("' (")+(String)(hostEntry.addresses())[0]+String(")")); // INETSocketAddress::internetAddress((hostEntry.addresses())[0]); // if(!serverEntry.serviceByName("ftp","tcp")){message("cannot determine port number for ftp daemon.");return FALSE;} // if(!mFTPControl.openSocket()){message("unable to create socket.");return FALSE;} // INETSocketAddress::family(PF_INET); // INETSocketAddress::port(serverEntry.port()); // if(!mFTPControl.connect((INETSocketAddress&)*this)){message("unable to connect to ftp daemon");return FALSE;} // if(!receive(mAckConnectionResponseStrings))return FALSE; // mFTPControl.getSocketName((INETSocketAddress&)*this); // return mFTPControl.isConnected(); // InternetAddress internetAddress(void)const; // void internetAddress(const InternetAddress &someInternetAddress); winConsole.read(); #include #include #include #include #include #include #include int index; BYTE currByte; BYTE lastByte; BYTE repCount; bool reset; index=0; reset=true; mInputCount=0; mOutputCount=0; while(index #include #include class RLECompress { public: RLECompress(void); virtual ~RLECompress(); bool compress(GlobalData &inData,GlobalData &outData); bool decompress(GlobalData &inData,GlobalData &outData); float getCompressionRatio(void)const; unsigned getOutputCount(void)const; unsigned getInputCount(void)const; private: enum{MaxRep=128}; unsigned compress(unsigned char *pInData,unsigned char *pOutData,unsigned inLength,bool emit); void output(unsigned char repCount,unsigned char charData,unsigned char *pOutData,unsigned &outIndex,bool emit); unsigned mOutputCount; unsigned mInputCount; }; inline RLECompress::RLECompress(void) { } inline RLECompress::~RLECompress() { } inline bool RLECompress::compress(GlobalData &inData,GlobalData &outData) { unsigned requiredLength; unsigned char charData; requiredLength=compress(&inData[0],&charData,inData.size(),false); outData.size(requiredLength+4); *((unsigned*)&outData[0])=mInputCount; compress(&inData[0],&outData[4],inData.size(),true); return true; } inline unsigned RLECompress::compress(unsigned char *pInData,unsigned char *pOutData,unsigned inLength,bool emit) { unsigned char currByte; unsigned char lastByte; unsigned char repCount; unsigned srcIndex; unsigned dstIndex; bool reset; srcIndex=0; dstIndex=0; reset=true; mInputCount=0; mOutputCount=0; while(srcIndex &inData,GlobalData &outData) { return true; } inline unsigned RLECompress::getOutputCount(void)const { return mOutputCount; } inline unsigned RLECompress::getInputCount(void)const { return mInputCount; } //int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR lpszCmdLine,int /*nCmdShow*/) int main(int argc,char **argv) { FileHandle openFile; GlobalData inData; GlobalData outData; RLECompress rleCompress; String strMessage; String strPathFileName; Console winConsole; winConsole.getConsoleScreenBufferInfo(); if(1==argc)return 0; // if(!lpszCmdLine)return 0; // strPathFileName=lpszCmdLine; strPathFileName=argv[1]; if(!openFile.open(strPathFileName)) { winConsole.writeLine(String("can't open '")+strPathFileName+String("'")); winConsole.read(); return 0; } inData.size(openFile.size()); openFile.read(&inData[0],inData.size()); rleCompress.compress(inData,outData); ::sprintf(strMessage,"compression ratio:%lf",rleCompress.getCompressionRatio()); winConsole.writeLine(strMessage); ::sprintf(strMessage,"input length:%d",rleCompress.getInputCount()); winConsole.writeLine(strMessage); ::sprintf(strMessage,"output length:%d",rleCompress.getOutputCount()); winConsole.writeLine(strMessage); winConsole.read(); return 0; }