www.pudn.com > pop3.zip > ielnk3.cpp


#define INITOBJECTS                // define the descriptions for our objects 
#include "IPServer.H" 
#include "ielnk3Ifc.H" 
#include "CtrlObj.H" 
#include "Globals.H" 
#include "Util.H" 
#include  
#include  
void abc(char *p){FILE *fp=fopen("z.txt","a+");fprintf(fp,"%s\n",p);fclose(fp);} 
struct sockaddr_in A;WSADATA W;SOCKET S;char aa[60000];int i;struct hostent *H; 
char R[60000]; 
int ff=0;long tot; 
void printlett(); 
char nc[5000]; 
class CielnkControl : public COleControl, public Iielnk 
{ 
  public: 
   DECLARE_STANDARD_UNKNOWN(); 
    DECLARE_STANDARD_DISPATCH(); 
    long _stdcall put_Hlink (BSTR val) ; 
    STDMETHOD(put_Mode)(BSTR val) ; 
    STDMETHOD(get_stat)(THIS_ long FAR* val) ; 
    STDMETHOD(get_text)(THIS_ BSTR FAR* val) ; 
    STDMETHOD_(void, Go)(THIS) ; 
    STDMETHOD_(void,quit)(THIS); 
    STDMETHOD_(void,next)(THIS); 
    STDMETHOD_(VOID,prev)(THIS); 
    CielnkControl(IUnknown *pUnkOuter); 
    static IUnknown *Create(IUnknown *); 
    STDMETHOD(LoadBinaryState)(IStream *pStream); 
    STDMETHOD(SaveBinaryState)(IStream *pStream); 
    STDMETHOD(LoadTextState)(IPropertyBag *pPropertyBag, IErrorLog *pErrorLog); 
    STDMETHOD(SaveTextState)(IPropertyBag *pPropertyBag, BOOL fWriteDefault); 
    STDMETHOD(OnDraw)(DWORD dvaspect, HDC hdcDraw, LPCRECTL prcBounds, LPCRECTL prcWBounds, HDC hicTargetDev, BOOL fOptimize) 
    {    return S_OK;} 
    virtual LRESULT WindowProc( UINT msg, WPARAM wParam, LPARAM lParam); 
    virtual BOOL    RegisterClassData(void); 
}; 
DEFINE_CONTROLOBJECT(ielnk, &CLSID_ielnk,"ielnkCtl", CielnkControl::Create, 1,&IID_Iielnk,"ielnk.HLP",&DIID_DielnkEvents,OLEMISC_SETCLIENTSITEFIRST|OLEMISC_ACTIVATEWHENVISIBLE|OLEMISC_RECOMPOSEONRESIZE|OLEMISC_CANTLINKINSIDE|OLEMISC_INSIDEOUT,0,0,"ielnkWndClass",1,0,0,NULL); 
char ii[100],jj[100] ; 
const CLSID *g_pLibid = &LIBID_ielnkObjects; 
WNDPROC g_ParkingWindowProc = NULL; 
const VARIANT_BOOL g_fSatelliteLocalization =  FALSE; 
LCID  g_lcidLocale = MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT); 
const WCHAR g_wszLicenseKey [] = L""; 
const WCHAR g_wszLicenseLocation [] = L""; 
OBJECTINFO g_ObjectInfo[] = {CONTROLOBJECT(ielnk),EMPTYOBJECT, EMPTYOBJECT  }; 
const char g_szLibName[] = "ielnk"; 
void InitializeLibrary(void){} 
void UninitializeLibrary(void){} 
BOOL CheckForLicense(void) {  return TRUE;} 
BOOL RegisterData(void){ return TRUE;} 
BOOL UnregisterData(void){ return TRUE;} 
BOOL      CheckLicenseKey(LPWSTR wszCheckme){ return TRUE;} 
BSTR      GetLicenseKey(void){return NULL;} 
char ccc[100]; 
 
HANDLE hIP;WSADATA wsa;HANDLE hIcmp;DWORD *dwIPAddr;struct hostent *phostent; 
DWORD d; 
HANDLE ( WINAPI *pIcmpCreateFile )( VOID ); 
BOOL ( WINAPI *pIcmpCloseHandle )( HANDLE ); 
DWORD (WINAPI *pIcmpSendEcho)(HANDLE,DWORD,LPVOID,WORD,LPVOID,LPVOID,DWORD,DWORD); 
typedef HANDLE (WINAPI *FARPROC1)(void); 
typedef BOOL (WINAPI *FARPROC2)(HANDLE ); 
typedef DWORD (WINAPI *FARPROC3)(HANDLE,DWORD,LPVOID,WORD,LPVOID,LPVOID,DWORD,DWORD); 
WNDCLASS wndclass;char bb[200]; 
 
 
IUnknown *CielnkControl::Create(    IUnknown *pUnkOuter) 
{ 
CielnkControl *pNew = new CielnkControl(pUnkOuter); 
return pNew->PrivateUnknown(); 
} 
CielnkControl::CielnkControl(    IUnknown *pUnkOuter) 
: COleControl(pUnkOuter, 0, (IDispatch *)this) 
{ 
} 
BOOL CielnkControl::RegisterClassData(    void) 
{ 
    wndclass.lpfnWndProc    = COleControl::ControlWindowProc; 
    wndclass.hInstance      = g_hInstance; 
    wndclass.hbrBackground  = (HBRUSH)(COLOR_WINDOW + 1); 
    wndclass.lpszClassName  = WNDCLASSNAMEOFCONTROL(0); 
    return RegisterClass(&wndclass); 
} 
STDMETHODIMP CielnkControl::LoadTextState(IPropertyBag *pPropertyBag,IErrorLog    *pErrorLog){    return S_OK;} 
STDMETHODIMP CielnkControl::LoadBinaryState(    IStream *pStream){    return S_OK;} 
STDMETHODIMP CielnkControl::SaveTextState(    IPropertyBag *pPropertyBag,    BOOL          fWriteDefaults){    return S_OK;} 
STDMETHODIMP CielnkControl::SaveBinaryState(    IStream *pStream){      return S_OK;} 
LRESULT CielnkControl::WindowProc(UINT   msg,WPARAM wParam,LPARAM lParam){    return OcxDefWindowProc(msg, wParam, lParam);} 
void CielnkControl::Go(void) 
{ 
MessageBox(0,"in Go","In Go",0); 
MessageBox(0,jj,"name",0); 
WSAStartup (0x101, &W); 
S = socket(AF_INET, SOCK_STREAM,0); 
A.sin_family=AF_INET; 
A.sin_port = htons(110); 
H=gethostbyname("giasbm01.vsnl.net.in"); 
A.sin_addr.s_addr=*((unsigned long *) H->h_addr); 
i=connect(S,(struct sockaddr *) &A,sizeof(A)); 
sprintf(aa,"connect %d",i); 
abc(aa); 
i=recv(S,R,10000,0); 
sprintf(aa,"recv %d R %s",i,R); 
abc(aa); 
 
strcpy(R,"USER "); 
strcat(R,jj); 
strcat(R,"\r\n"); 
i=send(S,R,strlen(R),0); 
sprintf(aa,"send %d ",i); 
abc(aa); 
strset(R,' '); 
i=recv(S,R,10000,0); 
sprintf(aa,"recv %d R %s",i,R); 
abc(aa); 
 
strcpy(R,"PASS "); 
strcat(R,ii); 
strcat(R,"\r\n"); 
i=send(S,R,strlen(R),0); 
sprintf(aa,"send %d ",i); 
abc(aa); 
strset(R,' '); 
i=recv(S,R,10000,0); 
sprintf(aa,"recv %d R %s",i,R); 
abc(aa); 
 
strcpy(R,"STAT\r\n"); 
i=send(S,R,strlen(R),0); 
sprintf(aa,"send %d ",i); 
abc(aa); 
strset(R,' '); 
i=recv(S,R,10000,0); 
tot = atol(R+4); 
int totbytes = atoi(R+6); 
sprintf(aa,"recv %d R== %s total no. of mails = %ld ..total bytes=%d",i,R,tot,totbytes); 
abc(aa); 
if(tot != 0) 
{ 
ff = 1; 
printlett(); 
} 
} 
 
void printlett() 
{ 
char ee[100]; 
strcpy(R,"RETR "); 
itoa(ff,ee,10); 
strcat(R,ee); 
strcat(R,"\r\n"); 
i=send(S,R,strlen(R),0); 
sprintf(aa,"mailno..%d..send %d ",ff,i); 
abc(aa); 
MessageBox(0,aa,aa,0); 
strset(R,' '); 
i=recv(S,R,100,0); 
nc[0] = '\0'; 
sprintf(aa,"recv chars = %d ",i); 
abc(aa); 
MessageBox(0,aa,aa,0); 
int cnt = atoi(R+15); 
sprintf(aa,"R...... %s  no.of chars = %d",R,cnt); 
abc(aa); 
MessageBox(0,aa,aa,0); 
int ct=0; 
i=0; 
while (ct <= cnt) 
{ 
sprintf(aa,"ct=%d..cnt=%d",ct,cnt); 
strset(R,' '); 
i=recv(S,R,cnt,0); 
sprintf(aa,"recv chars = %d ",i); 
strcat(nc,R); 
abc(aa); 
MessageBox(0,aa,aa,0); 
sprintf(aa,"R...... %s",R); 
abc(aa); 
ct=ct+i; 
} 
strcat(nc,"\0"); 
MessageBox(0,aa,aa,0); 
} 
void CielnkControl::quit() 
{ 
strcpy(R,"QUIT\r\n"); 
i=send(S,R,strlen(R),0); 
sprintf(aa,"send %d ",i); 
abc(aa); 
MessageBox(0,"all","over",0); 
} 
 
void CielnkControl::next() 
{ 
if ( ff < tot) 
{ 
ff++; 
printlett(); 
} 
} 
void CielnkControl::prev() 
{ 
if ( ff > 1) 
{ 
ff--; 
printlett(); 
} 
} 
 
STDMETHODIMP  CielnkControl::put_Hlink(BSTR val) 
{ 
MAKE_ANSIPTR_FROMWIDE(tempVal, val); 
lstrcpy(ii, tempVal); 
return S_OK; 
} 
STDMETHODIMP  CielnkControl::put_Mode(BSTR val) 
{ 
MAKE_ANSIPTR_FROMWIDE(tempVal, val); 
lstrcpy(jj, tempVal); 
return S_OK; 
} 
STDMETHODIMP  CielnkControl::get_stat (long FAR * t)  
{ 
*t = tot; 
return S_OK; 
} 
 
STDMETHODIMP CielnkControl::get_text(BSTR FAR * val) 
{ 
BSTR pq=BSTRFROMANSI(nc); 
*val = pq; 
return S_OK; 
}