<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++
    主站蜘蛛池模板: 国产乱色精品成人免费视频| 日本免费一区二区久久人人澡| 4虎1515hh永久免费| 久久久久久久尹人综合网亚洲 | 亚洲AV午夜成人片| 亚洲成a人无码av波多野按摩| 色偷偷噜噜噜亚洲男人| 久久成人免费播放网站| 亚洲免费在线视频| 国产香蕉免费精品视频| 亚洲天然素人无码专区| 在线免费观看国产视频| 五月天婷婷精品免费视频| 国产成人综合亚洲亚洲国产第一页| 亚洲AV色欲色欲WWW| 亚洲国产黄在线观看| 99久久成人国产精品免费| 亚洲高清免费在线观看| 成人女人A级毛片免费软件| 亚洲成AV人片高潮喷水| 亚洲精品专区在线观看| 亚洲AV无码成人精品区日韩| 亚洲国产成人VA在线观看| 你是我的城池营垒免费看| 亚洲国产成人精品无码一区二区| 女人毛片a级大学毛片免费| av午夜福利一片免费看久久| 亚洲影院在线观看| 波多野结衣久久高清免费 | www免费黄色网| 亚洲黄色免费在线观看| 黄a大片av永久免费| 在线观看人成视频免费无遮挡| 亚洲理论片中文字幕电影| 久久午夜免费鲁丝片| 亚洲人成图片网站| 久久99国产亚洲高清观看首页| 成年轻人网站色免费看| 亚洲午夜无码久久久久小说 | 亚洲精品国产V片在线观看| 久久免费的精品国产V∧|