shadowjosh
一般會員
發表:2 回覆:0 積分:0 註冊:2005-04-12
發送簡訊給我
|
請各位高手幫忙看一下,不知道為什麼區域網路內對傳就可以成功但對外網路就不能... Client端: //--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TMemoryStream *msFile;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute()){
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
Edit3->Text=OpenPictureDialog1->FileName;
}
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)
{ if( Edit1->Text!="" && Edit2->Text!="") {
ClientSocket1->Address=Edit1->Text;
ClientSocket1->Port=StrToInt(Edit2->Text);
ClientSocket1->Active=true;
StatusBar1->SimpleText=" 連 線 中 !!";
msFile=new TMemoryStream;
Button3->Enabled=true; }
else
MessageBox(NULL,"請輸入IP 及 Port ! ! ! ","Error",MB_OK); if(ClientSocket1->Active) {
ClientSocket1->Close();
StatusBar1->SimpleText=" 斷 線 ! ! !";
Button3->Enabled=false;
}
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Connecting(TObject *Sender,
TCustomWinSocket *Socket)
{
Button1->Enabled=false;
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
Memo1->Lines->Add(AnsiString("Error:") ErrorCode);
ErrorCode = 0; //以免出現錯誤訊息
}
//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender)
{
Button3->Enabled=false;
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender)
{ TMemoryStream *msFile=new TMemoryStream;
msFile->LoadFromFile(Edit3->Text);
MYPACK mp; int block,i; //設定有幾個封包
if(msFile->Size%MAX_DATASIZE==0)
block=msFile->Size/MAX_DATASIZE;
else
block=msFile->Size/MAX_DATASIZE 1;
ProgressBar1->Max=block;
//設定Header
for(i=0; iChecked==true)
mp.dwkind=1;
else
mp.dwkind=2;
mp.dwPackTotal=block;
mp.dwPackCount=i;
mp.dwTotalDataSize=msFile->Size;
if((i 1)*MAX_DATASIZE>msFile->Size)
mp.dwThisDataSize=msFile->Size-i*MAX_DATASIZE;
else
mp.dwThisDataSize=MAX_DATASIZE; msFile->Position=i*MAX_DATASIZE;
msFile->Read(mp.pbThisData, mp.dwThisDataSize); ClientSocket1->Socket->SendBuf(&mp, sizeof(MYPACK));
Sleep(5);
ProgressBar1->Position ;
}
ProgressBar1->Position=0;
delete msFile;
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text=" 斷 線 ";
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1->Panels->Items[0]->Text=" 連 線 中 ";
}
//--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender)
{
Memo1->Lines->Clear();
}
//--------------------------------------------------------------------------- Sever端: //--------------------------------------------------------------------------- #include
#pragma hdrstop
#include "Division_cut.cpp"
#include
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TMemoryStream *msFile=NULL;
Division *image_w=NULL;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender)
{
ServerSocket1->Port=9999;
ServerSocket1->Active=true;
msFile=new TMemoryStream;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
int k,i,*x,*Result,*space,j;
char *WordSpace;
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;
Label1->Caption=" 接 收 中 ";
ProgressBar1->Max=mp.dwPackTotal;
}
msFile->Write(mp.pbThisData, mp.dwThisDataSize);
ProgressBar1->Position ;
if(sz=="FILE-END") //傳輸檔案的最後一個封包
{
msFile->Position=0;
//如果存在就刪除 mp.szFileName
if(FileExists(mp.szFileName) )
DeleteFile(mp.szFileName); msFile->SaveToFile(mp.szFileName);
msFile->Clear();
Image1->Picture->LoadFromFile(mp.szFileName); Label1->Caption=" 傳 輸 中 "; image_w=new Division(Image1,Image1->Picture->Height,Image1->Picture->Width);
image_w->gray(); //灰階
image_w->Otsu_threshold(); //Otsu(統計式取中間值)
image_w->setImage();
image_w->Horizontal_cut(); //水平分割 ProgressBar1->Max=image_w->getHorizontal_lines();
ProgressBar1->Position=0; for(k=0;kgetHorizontal_lines();k ) {
image_w->setChoise_line(k 1);
image_w->Catch();
image_w->Vertical_cut(); //垂直分割
image_w->cut_col_word(); //擷取一個一個的字(一行)
Result=new int[image_w->getVertical_lines()];
WordSpace=new char[image_w->getVertical_lines() image_w->getSpace_lines()];
space=image_w->getSpace();
if(mp.dwkind==1)
x=image_w->BP_neural_network("英文大寫");
else
x=image_w->BP_neural_network("特殊符號");
for(i=0;igetcounter();i ) {
Result[i]=65 x[i];
}
j=0;
for(i=0;igetVertical_lines();i ) {
WordSpace[i j]=(char)Result[i];
if(space!=NULL)
if(space[j]==i) {
j ;
WordSpace[i j]=(char)' ';
}
}
WordSpace[image_w->getVertical_lines() j]='\0';
String buf(WordSpace);
ServerSocket1->Socket->Connections[0]->SendText(buf);
free(Result);free(WordSpace);
Sleep(5);
ProgressBar1->Position ;
}
Label1->Caption=" ";
ProgressBar1->Position=0;
}
} }
//--------------------------------------------------------------------------- 發表人 - shadowjosh 於 2005/04/26 22:21:03
|