怎么样使用Socket控件上传文件?(150分)

  • 主题发起人 主题发起人 feng_chen
  • 开始时间 开始时间
F

feng_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,小弟有个棘手的问题在此请教各位:怎么样用ClientSocket和ServerSocket控件实现文件
(例如几个DBF文件)的传输?目前小弟有个程序是实现将客户端的几个固定结构的DBF表上传到服务器的
ORACLE数据库里,我是这样做的(方法很傻,各位大侠不要见笑---小弟我是新手):在客户端用BDE打开
要上传的DBF表,读出数据,动态的生成一大串sql语句(insert into table1 values(...)),随后把
这一大堆sql语句通过ClientSocket的SetText方法传送到服务器,服务器接受到了以后再在ORACLE里执行
这些sql语句,从而在ORACLE数据库上生成数据。哈哈,各位大侠一定笑坏了吧,怎么会用这么苯的方法,
小弟我也是实在想不出什么更好的办法,还有劳各位大哥大姐们多多指教,小弟我感激不尽!
 
你用内存流的方式来传递文件吧.你先前的方法的方法的确糟糕了点.这上面许多关于文件
传输的例子.你搜搜看吧?
 
我刚写了一个程序,在我的机器上没问题,不过是用c++builder写的
你自己还要修改源文件名和目录文件名和地址,仅共参考。
private: // User declarations
TMemoryStream *sourcefile;
TMemoryStream *destinationfile;
long int receivesize;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
sourcefile->LoadFromFile("d://excel.exe");
sourcefile->Position=0;
c->Socket->SendStream(sourcefile);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::sClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
byte buffer[81920];
receivesize=Socket->ReceiveLength();
Socket->ReceiveBuf(buffer,receivesize);
destinationfile->Write(buffer,receivesize);

if((destinationfile->Size)>=7151661)
{
destinationfile->Position=0;
destinationfile->SaveToFile("d://hong.exe");
destinationfile->Free();
ShowMessage("Successfull");
}


}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
sourcefile=new TMemoryStream();
destinationfile=new TMemoryStream();
}

我很想加一句
sourcefile->free();
但是程序运行到这就抱错,我搞不懂了,是不是我的c++builder有问题呀(D版的)
 

hly你好,我也用BCB5,你知道吗关于在多层数据结构系统中,
数据包DATAPACKT的拦截然后加密的问题。请看我如何实现
数据的DATAIN和DATAOUT叫!
 
为什么用socket哪,用com不是很好吗?
 
to alongsun:
我还没有用过多层的,只是了解了一下李维写的书。
 
后退
顶部