<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   協議棧發生錯誤!");  
                      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("設置超時錯誤");  
                      WSACleanup();  
                      return   ;  
              }  
              int   buf=10240;  
              int   status2=setsockopt(sockClient,SOL_SOCKET,SO_RCVBUF,(char*)&buf,sizeof(int));  
              if(status2)  
              {  
                      MessageBox("設置緩沖區大小錯誤");  
                      WSACleanup();  
                      return   ;  
              }  
               
               
              if(connect   (sockClient,   (struct   sockaddr   *)&sin,   sizeof   (sin))   ==   SOCKET_ERROR)  
              {  
     MessageBox("連接錯誤");  
                      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   協議棧發生錯誤!");  
                      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("綁定錯誤");  
                      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("設置超時錯誤");  
                      WSACleanup();  
                      return   0;  
              }  
              int   buf=10240;  
              int   status2=setsockopt(sockRecv,SOL_SOCKET,SO_RCVBUF,(char*)&buf,sizeof(int));  
              if(status2)  
              {  
                      AfxMessageBox("設置緩沖區大小錯誤");  
                      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 閱讀(1210) 評論(0)  編輯  收藏 所屬分類: C++
    主站蜘蛛池模板: 国产性生交xxxxx免费| 中文字幕无码免费久久99| 免费观看国产小粉嫩喷水| 亚洲不卡中文字幕| 91久久成人免费| 亚洲毛片免费观看| 青青青国产在线观看免费网站| 亚洲视频手机在线| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲自偷自偷精品| 成年黄网站色大免费全看| 亚洲一欧洲中文字幕在线| 在线观看免费人成视频色| 亚洲男人的天堂久久精品| 免费电视剧在线观看| 国产精品亚洲综合五月天| 大学生美女毛片免费视频| 国产精品亚洲а∨无码播放麻豆| 亚洲&#228;v永久无码精品天堂久久| 国产成人综合亚洲| 精品国产亚洲一区二区在线观看 | 亚洲午夜AV无码专区在线播放 | 国产曰批免费视频播放免费s| 亚洲另类小说图片| 欧洲精品免费一区二区三区| 视频一区二区三区免费观看| 亚洲日韩在线中文字幕第一页 | 黄页网站免费观看| 牛牛在线精品观看免费正| 久久久久亚洲精品无码网址| 久久99国产乱子伦精品免费| 国产成+人+综合+亚洲专| 人人狠狠综合久久亚洲高清| 久操视频免费观看| 亚洲欧洲精品成人久久曰| 亚洲中文字幕丝袜制服一区| 四虎影视无码永久免费| 亚洲中文字幕AV在天堂| 亚洲人成色77777在线观看大| 最近最好最新2019中文字幕免费| 亚洲国产精品成人午夜在线观看|