請問透過Socket如何在Client端顯示Server端傳送過來的jpeg file?? |
答題得分者是:RaynorPao
|
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: structure如下 Typedef struct TEST { DWORD header; DWORD size; BYTE jpgdata[1]; }TEST; size = 8(DWORD*2) length(jpgdata) 那我該怎麼去抓取jpg的file在我Client端的畫面做顯示呢?? shing187 你好: (1)先想辦法取得 jpg 圖形的實體資料,這部分可能需要 server 端的配合,也 就是說,最好先把 jpg 圖形的實體資料切割成比較小的封包來傳送,例如: 假設原本的 jpg 大小為 201k,每次只傳送 2k,server 總共需要傳送 101 次,client 也要接收 101 次(在 ClientSocketRead 裡面接收) (2)在(1)中每次接收到的資料,依次放入一個 TMemoryStream *msBuf; 等到搜 集到全部的 jpg 資料以後,就可以利用(3)的程式碼達成 (3)範例程式碼... >>>>> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
在ClientSocket1Read中寫了下面的程式
TEST pstrm;
ClientSocket1->Socket->ReceiveBuf(&pstrm, sizeof(TEST));
TMemoryStream *msBuf=new TMemoryStream;
msBuf->Size=TEST.size;
msBuf->Write(&pstrm.lpdata[1],1); 可是msBuf->Size=TEST.size;這一行好像會有問題
執行時會出現錯誤訊息
不知道該怎麼寫才正確??
才能將jpg都Load到msBuf中 發表人 - shing187 於 2003/02/11 17:57:10
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 在ClientSocket1Read中寫了下面的程式 TEST pstrm; ClientSocket1->Socket->ReceiveBuf(&pstrm, sizeof(TEST)); TMemoryStream *msBuf=new TMemoryStream; msBuf->Size=TEST.size; msBuf->Write(&pstrm.lpdata[1],1); 可是msBuf->Size=TEST.size;這一行好像會有問題 執行時會出現錯誤訊息 不知道該怎麼寫才正確?? 才能將jpg都Load到msBuf中 shing187 你好: (1)上面那一行改成這樣看看 msBuf->Size=pstrm.size; (2)另外~~我個人建議你的封包最好改成以下這樣(參考看看) >>>>> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
Typedef struct TEST
{
DWORD header;
DWORD size;
BYTE jpgdata[4096];
}TEST;
我的CODE如下.....
TEST pstrm;
TMemoryStream *msBuf=new TMemoryStream;
msBuf->Size=pstrm.size;
msBuf->Write(pstrm.lpdata, pstrm.size);
TJPEGImage *jpeg=new TJPEGImage;
msBuf->Position=0;
jpeg->LoadFromStream(msBuf);
Image1->Picture->Assign(jpeg);
delete jpeg;
delete msBuf;
可是得到的JPEG FORMAT,表頭會多一個FF的BYTE
為什麼呢??
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: Typedef struct TEST { DWORD header; DWORD size; BYTE jpgdata[4096]; }TEST; 我的CODE如下..... TEST pstrm; TMemoryStream *msBuf=new TMemoryStream; msBuf->Size=pstrm.size; msBuf->Write(pstrm.lpdata, pstrm.size); TJPEGImage *jpeg=new TJPEGImage; msBuf->Position=0; jpeg->LoadFromStream(msBuf); Image1->Picture->Assign(jpeg); delete jpeg; delete msBuf; 可是得到的JPEG FORMAT,表頭會多一個FF的BYTE 為什麼呢??shing187 你好: 請問你的 server 端是怎麼寫的呢?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
RaynorPao你好....
我只有Server端程式的Struct,並不知道Server端程式的寫法!! 我目前把做法改變為包括Header等一起寫入到MemoryStream中
然後再把MemoryStream的Data放到struct中做處理
但是我目前遇到的問題
[1]
int size = ClientSocket1->Socket->ReceiveBuf( x, y)
不知道是為什麼??
不管y值是多少,第一個size一定都是8192,後面的size值會跟y值相同
[2]
該怎麼把ReceiveBuf得到的Data連續的放入MemoryStream
我的Data會被後面的Data覆蓋,程式該怎麼做呢??
[3]
我該怎麼把MemoryStream的Data放到Struct中呢?? 發表人 - shing187 於 2003/02/12 18:29:22
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好.... 我只有Server端程式的Struct,並不知道Server端程式的寫法!! 我目前把做法改變為包括Header等一起寫入到MemoryStream中 然後再把MemoryStream的Data放到struct中做處理 但是我目前遇到的問題 [1] int size = ClientSocket1->Socket->ReceiveBuf( x, y) 不知道是為什麼?? 不管y值是多少,第一個size一定都是8192,後面的size值會跟y值相同 [2] 該怎麼把ReceiveBuf得到的Data連續的放入MemoryStream 我的Data會被後面的Data覆蓋,程式該怎麼做呢?? [3] 我該怎麼把MemoryStream的Data放到Struct中呢??shing187 你好: 麻煩你先發一封 mail 給我 --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
RaynorPao你好....
我現在程式的寫法如下....不知道哪裡有錯誤...
沒有辦法從struct讀到正確的資料
在ClientSocket1Read中
TEST pstrm;
BYTE *Buf = new BYTE[8192];
int size=ClientSocket1->Socket->ReceiveBuf(Buf, 8192);
msBuf->WriteBuffer(Buf, size);
msBuf->Read(&pstrm, size);
delete[] Buf;
還是該用什麼method將MemoryStream的data放到struct中呢??
請指教.... 發表人 - shing187 於 2003/02/13 18:06:15
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |