当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 谢谢! ......
    摘要: 怎样用asp上传图片到数据库,这一直困饶我,请各位高手帮帮我! ......


我写了一套网络通信程序,但是有问题,请大家帮忙看一下

我想在客户端的文本框中输入要下载的文件名,然后点击按钮,  
  如果该文件在服务器端存在的话,就下载。还可以在服务器端的一  
  文本框中输入一个目录点击按钮,如果该目录在  
  客户端存在,就可以在listbox1   中显示在目录下的内容。  
      代码如下:  
    1。服务器程序的代码:  
        void   __fastcall   TForm1::ServerSocket1ClientConnect(TObject   *Sender,  
              TCustomWinSocket   *Socket)  
  {  
    ShowMessage("客户端已经连入");  
    StatusBar1->Panels->Items[0]->Text="客户端已经连入";  
     
    }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::ServerSocket1ClientRead(TObject   *Sender,  
              TCustomWinSocket   *Socket)  
  {  
    AnsiString   rcommand,rFile,Msg;  
    Msg=Socket->ReceiveText();  
    rcommand=Msg.SubString(1,5);//分解信息头  
    if(rcommand=="FILE_")  
    {  
        rFile=Msg.SubString(6,Msg.Length()-5);//分解文件名  
        if(FileExists(rFile))  
        {  
          Socket->SendText(rcommand);  
          TFileStream   *filestream=  
          new   TFileStream(rFile,fmOpenRead|fmShareDenyWrite);  
          Socket->SendStream(filestream);  
          filestream->Free();  
        }  
    }  
    else   if(rcommand=="LIST_")  
    {  
        ListBox1->Items->Text=Socket->ReceiveText();  
        Label1->Caption=Edit1->Text;  
      }  
      else  
      Memo1->Text   =   Memo1->Text   +Msg;  
  }  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TForm1::ServerSocket1ClientDisconnect(TObject   *Sender,  
              TCustomWinSocket   *Socket)  
  {  
        ShowMessage("客户端已经断开连接");  
        StatusBar1->Panels->Items[0]->Text="客户端已断开连接";  
        Memo1->Clear();  
  }  
  //---------------------------------------------------------------------------  
   
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
    AnsiString   Msg;  
    Msg="LIST_"+Edit1->Text;//构造请求信息  
    ServerSocket1->Socket->SendText(Msg);                  
  }  
  //---------------------------------------------------------------------------  
   
      2。客户端程序:  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
      String   server;  
      if(ClientSocket1->Active)  
          ClientSocket1->Close();  
      if(InputQuery("我的计算机连接到……","连接地址",server))  
        {  
          if(server.Length()>0)  
          {ClientSocket1->Host=server;  
            ClientSocket1->Open();  
            Button2->Enabled=true;  
            Button3->Enabled=true;  
            Button4->Enabled=true;  
            Edit1->Enabled=true;  
            }  
      }  
   
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::Button3Click(TObject   *Sender)  
  {  
      ClientSocket1->Close();  
                       
  }  
  //---------------------------------------------------------------------------  
   
   
   
  void   __fastcall   TForm1::Button4Click(TObject   *Sender)  
  {  
      if(Edit1->Text!="")  
      {  
    if(SaveDialog1->Execute())  
      {  
        FileName=SaveDialog1->FileName;  
        AnsiString   Msg;  
        Msg="FILE_"+Edit1->Text;//构造请求信息  
        ClientSocket1->Socket->SendText(Msg);  
      }  
      }  
      else   ShowMessage("请输入要下载的文件名");  
  }  
  //---------------------------------------------------------------------------  
   
   
  void   __fastcall   TForm1::ClientSocket1Read(TObject   *Sender,  
              TCustomWinSocket   *Socket)  
  {  
      int   n;  
      AnsiString   Header,rcommand,rFile;  
        void   *Buf;  
      TMemoryStream   *tmpStream;  
        Header=Socket->ReceiveText();  
        rcommand=Header.SubString(1,5);  
      if(rcommand=="LIST_")  
        {  
            if(DirectoryExists(rFile))  
            {  
              Socket->SendText(rcommand);  
              FileListBox1->Directory=rFile;  
              Socket->SendText(FileListBox1->Items->Text);  
            }  
        }  
        else  
    switch(ClientStatus)  
    {  
      case   csWait:  
            if(Header=="FILE_")  
            ClientStatus=csFile;  
            break;  
      case   csFile:  
          tmpStream=new   TMemoryStream();  
          Screen->Cursor=crHourGlass;  
          do{  
              n=Socket->ReceiveBuf(Buf,sizeof(Buf));  
              if(n<=0)  
              {ShowMessage("数据传输完毕");  
              break;}  
              else  
                  tmpStream->Write(Buf,n);  
              Sleep(200);  
                }while(true);  
              tmpStream->SaveToFile(FileName);  
              delete   tmpStream;  
              Screen->Cursor=crDefault;  
              ClientStatus=csWait;  
              MessageBox(Handle,"下载完毕!","网络通信程序",MB_OK);  
      }  
  }  
  //---------------------------------------------------------------------------  
   
  一运行就说什么API   ‘send’出错。这是怎么回事啊!

NO.1   作者: yangrenzhi

请先确定有否安装WinSock2。  
 

NO.2   作者: yangrenzhi

 
  那请最简化代码做测试。放一个Serv,一个Client  
   
  一个SendText   一个在接收事件里做ShowMessage  
   
  试试。SendText会不会报错。

NO.3   作者: sncel

请先传送几十M的文件进行测试,看看会不会丢包。


 ·用java读取位图    »显示摘要«
    摘要: 在java中如何读位图,并分析它的灰度值,并分析出概率 谢谢!!!! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE