geminigreat
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表:10 回覆:10 積分:4 註冊:2004-03-01
發送簡訊給我
|
請大家幫我測試一下,這支程式在單機可以執行傳檔,可是在兩台電腦執行時,就只能s2c不能c2s,或者是只能c2s不能s2c,都只能單方面傳送,請問各位問題出在那裡呢?謝謝。 ![]() 這是>
#>
#> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#>
#> >Address="127.0.0.1">Port=4000;
ClientSocket1->Open();
gmsFile=new TMemoryStream;
}
__fastcall TForm1::~TForm1()
{
if(gmsFile) delete gmsFile;
ClientSocket1->Close();
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ConnectClick(TObject *Sender)
{
msFile=new TMemoryStream;
ClientSocket1->Socket->SendText("Connect");
Connect->Enabled=false;
Disconnect->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
ClientSocket1->Close();
delete msFile;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{ MYPACK mp;
Socket->ReceiveBuf(&mp, sizeof(MYPACK));
AnsiString sz=(AnsiString)mp.szHeader;
if(sz.SubString(1, 4)=="FILE")
{
if(sz=="FILE-START")
{
msFile->Size=mp.dwTotalDataSize;
msFile->Position=0;
}
msFile->Write(mp.pbThisData, mp.dwThisDataSize);
if(sz=="FILE-END")
{
msFile->Position=0;
msFile->SaveToFile(mp.szFileName); msFile->Clear();
}
} }
//---------------------------------------------------------------------------
void __fastcall TForm1::DisconnectClick(TObject *Sender)
{
Connect->Enabled=true;
Disconnect->Enabled=false;
ClientSocket1->Socket->SendText("Disconnect");
} //---------------------------------------------------------------------------
void __fastcall TForm1::TransferFile(TObject *Sender,AnsiString filename)
{ ProgressBar1->Visible =true;
TMemoryStream *File=new TMemoryStream;
File->LoadFromFile(filename); MYPACK my_pack;
int i=0;
int block=(File->Size%MAX_DATASIZE==0)?
File->Size/MAX_DATASIZE: File->Size/MAX_DATASIZE 1;
ProgressBar1->Max =block;
for(i=0; i Position ;
if(i==0)
{
lstrcpy(my_pack.szHeader, "FILE-START");
}
else if(i==block-1)
{
lstrcpy(my_pack.szHeader, "FILE-END");
}
else
{
lstrcpy(my_pack.szHeader, "FILE-CONTINUE");
}
lstrcpy(my_pack.szFileName,ExtractFileName(filename).c_str());
my_pack.dwPackTotal=block;
my_pack.dwPackCount=i;
my_pack.dwTotalDataSize=File->Size;
my_pack.dwThisDataSize=((i 1)*MAX_DATASIZE>File->Size)?
File->Size-i*MAX_DATASIZE: MAX_DATASIZE; File->Position=i*MAX_DATASIZE;
File->Read(my_pack.pbThisData, my_pack.dwThisDataSize);
ClientSocket1->Socket->SendBuf(&my_pack, sizeof(MYPACK));
Sleep(10); }
delete File;
ProgressBar1->Visible =false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0;iExecute())
{
Button1->Enabled=true;
FileCount=OpenDialog1->Files->Count;
for(int i=0;iFiles->Strings[i]);
}
}
//--------------------------------------------------------------------------- < >< >
|