TClientSocket 收資料 |
答題得分者是:gemi0305
|
kenbcb
中階會員 ![]() ![]() ![]() 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
請問各位:
我要分二次收取資料,但第一次為9byte,第二次長度為fpBuf.Length(就是依照第一指定長度),分析好,在去檢查還沒有資料~ 結果無法收到資料,但確定有資料送進來~ 請大家指導~先謝謝各位
//--------------------------------------------------------------------------- void __fastcall TfrmAdmin::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { //the function process data write to buffer by socket int len; char *buffer,CRC; Front_Pack fpBuf; AnsiString tes; while(1) { len = Socket->ReceiveBuf(buffer,sizeof(fpBuf)); if(len == 0) return; else Application->MessageBox("df","Dfd",MB_OK); memmove((char *)&fpBuf,(char *)buffer,sizeof(fpBuf)); if(fpBuf.Leading == Header) { Socket->ReceiveBuf(buffer,fpBuf.Length sizeof(CRC) sizeof(Trailer)); if(*(buffer fpBuf.Length 1) == Trailer) ClientSocket1->Active = false; switch(fpBuf.Type) { case echo_online: char CODE; CODE = buffer[0]; if(CODE != 0x00) { frmAdmin->PageControl1Change(Sender); Echo_Message("online success"); } else { ClientSocket1->Active = false; Echo_Message("GServer reject online"); } break; case GDT_info: int i; char BOXID[MAX_ID]; bool gflag; gflag = true; memmove((char *)&BOXID,(char *)buffer,sizeof(BOXID)); for(i=0;i發表人 - kenbcb 於 2003/08/22 09:30:19 |
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
kenbcb你好,
你的程式中引用了很多你沒附上的東西,
如結構等等~
所以我只有照所看得出來,覺得是錯誤的地方,提出來讓你參考
|
kenbcb
中階會員 ![]() ![]() ![]() 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
這是bcb online help上TWinSocketStream的範例,
滿好用的,我都從上面小改一下就可以直接用,
你如果要做blocking,但對TWinSocketStream不熟,先k一下這些東西,
This example shows the execute method of a thread used to send requests to a server over a socket connection: void __fastcall TMyClientThread::Execute() { // create a TWinSocketStream for reading and writing TWinSocketStream *pStream = new TWinSocketStream(ClientSocket1->Socket, 60000); try { // fetch and process commands until the connection or thread is terminated while (!Terminated && ClientSocket1->Active) { try { char buffer[10]; GetNextRequest(buffer); // GetNextRequest must be a thread-safe method // write the request to the server pStream->Write(buffer, strlen(buffer) 1); // continue the communication (eg read a response from the server) ... } catch (Exception &E) { if (!E.ClassNameIs("EAbort")) Synchronize(HandleThreadException()); // you must write HandleThreadException } } } __finally { delete pStream; } }國泰平安 |
kenbcb
中階會員 ![]() ![]() ![]() 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |