<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0
      void   CNetRecvDlg::OnButton1()    
      {  
              CString   szIP;  
              GetDlgItem(IDC_EDIT1)->GetWindowText(szIP);  
              struct   sockaddr_in   sin;  
              WSADATA   wsaData;          
              SOCKET   sockClient;  
              int   IpPort;  
              char   *IpAddr;  
              IpAddr=szIP.GetBuffer(szIP.GetLength());  
              IpPort=800;  
               
              if(WSAStartup(0x0101,   &wsaData   ))  
              {  
                      AfxMessageBox("初始化   TCP/IP   協(xié)議棧發(fā)生錯(cuò)誤!");  
                      return;  
              }  
              if(wsaData.wVersion   !=   0x0101)  
              {  
                      AfxMessageBox("Winsock   version   is   incorrect!");  
                      WSACleanup();  
                      return;  
              }  
               
              if   ((sockClient   =   socket   (PF_INET,   SOCK_STREAM,   IPPROTO_IP))   ==   INVALID_SOCKET)  
              {  
                      AfxMessageBox("Create   socket   error!");  
                      return;  
              }  
               
               
              sin.sin_family=AF_INET;  
              sin.sin_addr.s_addr=inet_addr(IpAddr);  
              sin.sin_port=htons((short)IpPort);  
               
               
              int   timeout=300;    
              int   status=setsockopt(sockClient,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));          
              if(status)  
              {  
                      MessageBox("設(shè)置超時(shí)錯(cuò)誤");  
                      WSACleanup();  
                      return   ;  
              }  
              int   buf=10240;  
              int   status2=setsockopt(sockClient,SOL_SOCKET,SO_RCVBUF,(char*)&buf,sizeof(int));  
              if(status2)  
              {  
                      MessageBox("設(shè)置緩沖區(qū)大小錯(cuò)誤");  
                      WSACleanup();  
                      return   ;  
              }  
               
               
              if(connect   (sockClient,   (struct   sockaddr   *)&sin,   sizeof   (sin))   ==   SOCKET_ERROR)  
              {  
     MessageBox("連接錯(cuò)誤");  
                      closesocket(sockClient);  
                      WSACleanup();  
                      return;  
              }  
              else{  
                      WIN32_FIND_DATA   fd;  
                      ::Sleep(20);  
                      recv(sockClient,(char*)&fd,sizeof(WIN32_FIND_DATA),0);  
                      ////////////////////////////////////////////////////////  
                      //PROGRESS  
                      m_Progress.SetRange(0,(short)fd.nFileSizeLow);    
                      m_Progress.SetPos(0);  
                      m_Progress.SetStep(1);  
                      ////////////////////////////////////////////////////  
                      CString   m_ProDir="e:""";  
                      CFile   destFile(m_ProDir+fd.cFileName,   CFile::modeCreate   |   CFile::modeWrite   |   CFile::typeBinary);  
                      UINT   dwRead   =   0;  
                      while(dwRead<fd.nFileSizeLow)  
                      {  
                              byte*   data   =   new   byte[2048];  
                              memset(data,0,2048);  
                              UINT   dw=recv(sockClient,(char*)data,2048,0);  
                              destFile.Write(data,   dw);  
                              dwRead+=dw;  
                              delete   []   data;  
                              m_Progress.StepIt();  
                      }  
                      m_Progress.SetPos((short)fd.nFileSizeLow);    
                      SetFileTime((HANDLE)destFile.m_hFile,&fd.ftCreationTime,  
                              &fd.ftLastAccessTime,&fd.ftLastWriteTime);  
                      SetFileAttributes(m_ProDir+fd.cFileName,fd.dwFileAttributes);  
                      destFile.Close();  
                      closesocket   (sockClient);  
              WSACleanup();  
              }  
      } 

    ***********************************************************************************************
    #include   "afxmt.h"  
      CString   m_PATH;  
      DWORD   filesize;  
      HWND   hwnd_p;  
      int   IsBegin;  
       
       
      void   CNetSendDlg::OnTransfer(CString   m_PATH)  
      {  
       
      }  
       
       
       
      UINT   CNetSendDlg::ThreadA(LPVOID   pParam)  
      {  
              IsBegin=0;  
              CFile   myFile;  
              if(!myFile.Open(m_PATH,   CFile::modeRead   |   CFile::typeBinary|CFile::shareDenyNone))  
              {  
                      return   0;  
              }  
       
              CString   szIP;  
              struct   sockaddr_in   sin;  
              WSADATA   wsaData;          
              SOCKET   sockSrvr,sockRecv;  
              char   *IpAddr;  
              if(WSAStartup(0x0101,   &wsaData   ))  
              {  
                      AfxMessageBox("初始化   TCP/IP   協(xié)議棧發(fā)生錯(cuò)誤!");  
                      return   0;  
              }  
              if(wsaData.wVersion   !=   0x0101)  
              {  
                      AfxMessageBox("Winsock   version   is   incorrect!");  
                      WSACleanup();  
                      return   0;  
              }  
               
              if   ((sockSrvr   =   socket   (PF_INET,   SOCK_STREAM,   IPPROTO_IP))   ==   INVALID_SOCKET)  
              {  
                      AfxMessageBox("Create   socket   error!");  
                      return   0;  
              }  
       
              if   ((sockRecv   =   socket   (PF_INET,   SOCK_STREAM,   IPPROTO_IP))   ==   INVALID_SOCKET)  
              {  
                      AfxMessageBox("Create   socket   error!");  
                      return   0;  
              }  
              //////////////////////////////////////  
                          CString   m_addr;  
                          CString   m_strT;  
                          CString   sNetBiosName;  
                          char   hostname[128];  
                          struct   hostent   *phost;  
                          gethostname(hostname,128);  
                          m_addr   =   hostname;  
                          phost   =   gethostbyname(hostname);  
                          int   m_iCounter=0;  
                          for(int   j   =   0;j<4;j++)  
                          {  
                                   
                                  m_strT.Format("%u",   (unsigned   int)((unsigned   char*)phost->h_addr_list[0])[j]);  
                                  sNetBiosName+=m_strT;  
                                  if(m_iCounter<3)  
                                  {  
                                          m_iCounter++;  
                                          sNetBiosName+=".";  
                                  }      
                          }          
              //////////////////////////////////////  
              szIP=sNetBiosName;  
              IpAddr=szIP.GetBuffer(szIP.GetLength());  
              sin.sin_family=AF_INET;  
              sin.sin_addr.s_addr=inet_addr(IpAddr);  
              sin.sin_port=htons(800);  
              if(bind(sockSrvr,(sockaddr*)&sin,sizeof(sin))<0)  
              {  
                      AfxMessageBox("綁定錯(cuò)誤");  
                      return   0;  
              }  
              listen(sockSrvr,20);  
              int   length=sizeof(sin);  
              sockRecv=accept(sockSrvr,(struct   sockaddr*)&sin,&length);  
               
              int   timeout=300;    
              int   status=setsockopt(sockRecv,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));          
              if(status)  
              {  
                      AfxMessageBox("設(shè)置超時(shí)錯(cuò)誤");  
                      WSACleanup();  
                      return   0;  
              }  
              int   buf=10240;  
              int   status2=setsockopt(sockRecv,SOL_SOCKET,SO_RCVBUF,(char*)&buf,sizeof(int));  
              if(status2)  
              {  
                      AfxMessageBox("設(shè)置緩沖區(qū)大小錯(cuò)誤");  
                      WSACleanup();  
                      return   0;  
              }  
              //////////////////////////////////////////////////////////////////          
              WIN32_FIND_DATA                           FindFileData;  
              FindClose(FindFirstFile(m_PATH,&FindFileData));  
                  send(sockRecv,(char*)&FindFileData,sizeof(WIN32_FIND_DATA),0);  
              ////////////////////////////////////////////////////////  
              //PROGRESS  
              filesize=(short)FindFileData.nFileSizeLow;    
              ::PostMessage(hwnd_p,WM_USER_PROG,NULL,NULL);  
              ////////////////////////////////////////////////////  
              UINT   dwRead=0;  
              byte*   data;  
              while(dwRead<FindFileData.nFileSizeLow)  
              {  
                      data   =   new   byte[2048];  
                      UINT   dw=myFile.Read(data,   2048);  
                      send(sockRecv,(char*)data,2048,0);  
                      dwRead+=dw;  
                      delete   []   data;  
                      IsBegin=1;  
                      ::PostMessage(hwnd_p,WM_USER_PROG,NULL,NULL);  
              }  
              IsBegin=2;  
              //::PostMessage(hwnd_p,WM_USER_PROG,NULL,NULL);  
       
              myFile.Close();  
              closesocket(sockRecv);  
              closesocket(sockSrvr);  
              WSACleanup();  
       
              return   0;  
      }  
       
      LRESULT   CNetSendDlg::OnProgress(WPARAM   wParam,   LPARAM   lParam)  
      {  
              CString   st;  
              st.Format("%d",filesize);  
       
              if(IsBegin==0)  
              {  
              m_Progress.SetRange(0,(short)filesize/1000);    
              m_Progress.SetPos(0);  
              m_Progress.SetStep(1);  
              }  
              else   if(IsBegin==1)  
              {  
              m_Progress.StepIt();  
              }  
              else   if(IsBegin==2)  
              {  
                      m_Progress.SetPos((short)filesize/1000);  
              }  
       
              return   0;  
       
      }  
       
      static   char   BASED_CODE   szFilter[]="|*.*|";  
      void   CNetSendDlg::OnButton1()    
      {  
      OPENFILENAME         ofn   ;  
              TCHAR     szFullName[_MAX_PATH];  
              ::ZeroMemory   (&ofn,   sizeof(OPENFILENAME))   ;  
              szFullName[0]   =   TEXT('"0')   ;  
              ofn.lStructSize               =   sizeof   (OPENFILENAME)   ;  
              ofn.hwndOwner                   =   m_hWnd;  
              ofn.hInstance                   =   NULL   ;  
              ofn.lpstrFilter               =   "*.txt"0"0"   ;  
              ofn.lpstrCustomFilter   =   NULL   ;  
              ofn.nMaxCustFilter         =   0   ;  
              ofn.nFilterIndex             =   0   ;  
              ofn.nMaxFile                     =   MAX_PATH   ;  
              ofn.nMaxFileTitle           =   MAX_PATH   ;  
              ofn.lpstrInitialDir       =   "c:"""   ;  
              ofn.lpstrTitle                 =   "保存到";  
              ofn.lpstrFile                     =   szFullName   ;  
              ofn.nFileExtension         =   0   ;  
              ofn.lpstrDefExt               =   TEXT("txt")   ;  
              ofn.lCustData                   =   0   ;  
              ofn.lpfnHook                     =   NULL   ;  
              ofn.lpTemplateName         =   NULL   ;  
              ofn.Flags                           =   OFN_ENABLESIZING   |   OFN_OVERWRITEPROMPT   ;  
               
               
              if(!::GetOpenFileName(&ofn))  
                      return;  
          GetDlgItem(IDC_EDIT1)->SetWindowText(ofn.lpstrFile);  
               
      }  
       
      void   CNetSendDlg::OnButton2()    
      {  
      //         m_PATH="c:""1.jpg";  
              GetDlgItem(IDC_EDIT1)->GetWindowText(m_PATH);  
       
              hwnd_p=this->m_hWnd;  
              AfxBeginThread(ThreadA,NULL,THREAD_PRIORITY_IDLE);  
      }  
     
    posted on 2008-07-03 15:39 SIMONE 閱讀(1209) 評(píng)論(0)  編輯  收藏 所屬分類: C++
    主站蜘蛛池模板: 亚洲午夜久久久久久久久电影网| 成人片黄网站色大片免费观看cn| 亚洲免费在线观看视频| 亚洲av伊人久久综合密臀性色| 精品国产亚洲男女在线线电影 | 亚洲码欧美码一区二区三区| 最新国产成人亚洲精品影院| 精品亚洲国产成人| 亚洲色大网站WWW永久网站| 亚洲熟妇av午夜无码不卡| 亚洲精品无码久久久久APP| 亚洲国产成人精品无码区二本 | 亚洲国产成人无码av在线播放| 亚洲日韩在线视频| 亚洲一区二区三区免费视频| 亚洲AV无码精品蜜桃| 亚洲欧美日韩中文字幕一区二区三区| 亚洲欧美日韩中文高清www777| 国产天堂亚洲国产碰碰| 高清免费久久午夜精品| 最近的2019免费中文字幕| 三年片在线观看免费观看大全动漫 | 久久久久亚洲av成人无码电影| 中文字幕人成人乱码亚洲电影| 亚洲精品成人片在线观看精品字幕| 亚洲av中文无码乱人伦在线播放 | 亚洲&#228;v永久无码精品天堂久久| 日韩中文无码有码免费视频| 国产黄色片在线免费观看| 亚洲精品无码专区久久同性男| 亚洲免费观看视频| 亚洲日本香蕉视频| 亚洲精品无码成人片久久不卡| 免费大片av手机看片| 久草免费福利视频| 国产精品视频免费一区二区| 国产午夜免费福利红片| 国产亚洲一区二区精品| 亚洲一级在线观看| 四虎精品成人免费视频| 99久久国产免费-99久久国产免费|