線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1575
推到 Plurk!
推到 Facebook!

網路傳輸這樣作可行嗎..

答題得分者是:RaynorPao
wun
一般會員


發表:19
回覆:20
積分:7
註冊:2002-08-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-04 21:17:17 IP:203.203.xxx.xxx 未訂閱
我有40台client端要在每隔7秒傳一個檔案到Server,現在我的作法是:我現在Client端是用TNMStrm物件的postIt()這個方法來傳檔...那傳到了SERVER的TNMStrmServ物件會觸發NMStrmServ1MSG()會來接收檔案... 但我怕SERVER會來不及接收,我現在想建立一個Thread物件來作接收的動作呢..那這樣就可以40個Thread來接收(不知道這樣想對不對??)可是不知道如何作.....可否教導一下呢..謝謝... 發表人 - wun 於 2003/03/04 21:25:14
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-05 00:37:39 IP:61.221.xxx.xxx 未訂閱
引言: 我有40台client端要在每隔7秒傳一個檔案到Server,現在我的作法是:我現在Client端是用TNMStrm物件的postIt()這個方法來傳檔...那傳到了SERVER的TNMStrmServ物件會觸發NMStrmServ1MSG()會來接收檔案... 但我怕SERVER會來不及接收,我現在想建立一個Thread物件來作接收的動作呢..那這樣就可以40個Thread來接收(不知道這樣想對不對??)可是不知道如何作.....可否教導一下呢..謝謝...
wun 你好: 你現行的方式是怎麼寫的呢?? 方便把程式碼貼上來嗎?? 現在的做法你已經有實際試過了嗎?? 是否真的會造成 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
wun
一般會員


發表:19
回覆:20
積分:7
註冊:2002-08-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-05 01:03:17 IP:203.203.xxx.xxx 未訂閱
//送圖端 void __fastcall TClient::Net_Snap_Screen() { TJPEGImage *jp = new TJPEGImage(); Graphics::TBitmap *bmpBuf; HDC hdc; int x,y; HCURSOR hCur; ICONINFO IconInfo; POINT pt; hdc=::GetDC(0); x=Screen->Width; y=Screen->Height; bmpBuf=new Graphics::TBitmap; bmpBuf->Handle=::CreateCompatibleBitmap(hdc, x, y); ::BitBlt(bmpBuf->Canvas->Handle, 0, 0, bmpBuf->Width, bmpBuf->Height, hdc, 0, 0, SRCCOPY); hCur=GetCursor(); IconInfo.fIcon=FALSE; GetIconInfo(hCur, &IconInfo); GetCursorPos(&pt); pt.x-=IconInfo.xHotspot; pt.y-=IconInfo.yHotspot; DrawIcon(bmpBuf->Canvas->Handle, pt.x, pt.y, hCur); jp->PixelFormat=jf8Bit; jp->CompressionQuality = 10; // 設定圖像解析度(檔案大小) jp->Assign((TPersistent*)bmpBuf); jp->Compress(); BmpStream->Clear(); jp->SaveToStream(BmpStream); delete bmpBuf; delete jp; SendImage(); } //程式會先呼叫這個抓圖的Function //------------------------------------------------------------------- void __fastcall TClient::SendImage() { try { NMStrm1->Host = "163.17.9.144" NMStrm1->PostIt(BmpStream); } catch(...) { } BmpStream->Clear(); } //收圖端 int sn; void __fastcall TShow_Selec_Value_Form::NMStrmServ1MSG(TComponent *Sender,const AnsiString sFrom, TStream *strm) { char *buffer = new char[strm->Size 1]; strm->ReadBuffer(buffer,strm->Size); RsltStream->Write(buffer,strm->Size 1); try { RsltStream->Position=0; sn ; RsltStream->SaveToFile("c:/temp" sn ".jpg") Refresh(); } catch(...) { } RsltStream->Clear(); } //----------------------------------------------------------------- 當送圖端啟動了TNMStrm的PostIt()方法,就會觸發接收端NMStrmServ的NMStrmServ1MSG事件,可是我是有40台送圖同時會送圖到接收端,這樣作會不會有錯誤呢???還是要每個送圖端都要有一個Thread呢??那這樣是不是要在每個送圖端在PostIt()觸發NMStrmServ1MSG事件時產生一個Thread呢??那如果是這樣..要如何把Stream存成Flie的程式寫在Thread呢??因為Strm是NMStrmServ1MSG事件的參數..是否要把strm傳給Thread呢..要如何作呢..謝謝... 發表人 - wun 於 2003/03/05 01:04:44
wun
一般會員


發表:19
回覆:20
積分:7
註冊:2002-08-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-06 12:21:45 IP:203.203.xxx.xxx 未訂閱
請問包子哥..如果我二部電腦同時傳圖... 用您的範例圖片會不會錯亂呢... 謝謝...
wun
一般會員


發表:19
回覆:20
積分:7
註冊:2002-08-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-07 00:56:47 IP:203.203.xxx.xxx 未訂閱
包子哥您好...不好意思又要請教您一個問題了.. 如果現在我把收圖端的程式交給Thread作..要如作寫呢. 因為我要處理我Strm是在NMStrmServMSG事件裡的參數.. void __fastcall TShow_Selec_Value_Form::NMStrmServ1MSG(TComponent *Sender,const AnsiString sFrom, TStream *strm) ^^^^^^^^^^^^ 要如何才能把strm丟給thread處理呢... 謝謝... 發表人 - wun 於 2003/03/07 00:58:42
wun
一般會員


發表:19
回覆:20
積分:7
註冊:2002-08-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-07 00:57:26 IP:203.203.xxx.xxx 未訂閱
引言: 包子哥您好...不好意思又要請教您一個問題了.. 如果現在我把收圖端的程式交給Thread作..要如作寫呢. 因為我要處理我Strm是在NMStrmServMSG事件裡的參數.. void __fastcall TShow_Selec_Value_Form::NMStrmServ1MSG(TComponent *Sender,const AnsiString sFrom, TStream *strm) ^^^^^^^^^^^^ 要如何才能把strm丟給thread處理呢... 謝謝...
系統時間:2024-04-20 18:40:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!