Sendbuf 的問題 |
答題得分者是:andychang1690
|
a126154362
一般會員 發表:21 回覆:13 積分:6 註冊:2004-05-30 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
引言: 各位大大好 小弟想用sendbuf的指令"一次傳多的訊息" 不知道如何區資料 希望各位大大可以教教我.........3qa126154362:不太懂你的意思,我使用SendBuf();一向是做斷行處理! 範例: 發送端: msg="ret="對不起,不知所云。\r\nmsg=error\r\n"; // \r\n為斷行 SendBuf(msg.c_str(), msg.Length()); 接受端: TStrings* RecMsg; RecMsg = new TStringList(); RecMsg->Text=Socket->ReceiveText(); RecMsg->Values["ret"]; // ="對不起,不知所云。" RecMsg->Values["msg"]; // ="error" 你可以發現字串裡的ret=和msg=就是接收後的Value[]; 請參考! Andy Chang
------
Andy Chang |
a126154362
一般會員 發表:21 回覆:13 積分:6 註冊:2004-05-30 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
a126154362:如果你了解TStrings的Text及Values。我前篇已經告訴 你方法了!我現在引用你要的帳號,密碼,狀態(ID,PWS,TYPE)來說明! msg="ID=AndyChang\r\nPWS=andy\r\nTYPE=OK\r\n"; \r\n 不論你用SendBuf(msg.c_str(), msg.Length());的指令 還是Socket->sendtext(msg); 重點在接收端的處理! 接受端: TStrings* RecMsg; RecMsg = new TStringList(); RecMsg->Text=Socket->ReceiveText(); RecMsg->Values["ID"]; // AndyChang RecMsg->Values["PWS"]; // andy RecMsg->Values["TYPE"]; // OK 只要引用Values[]就可得到資料!若是你沒定義TYPE那結果是NULL! 請參考!Andy Chang
------
Andy Chang |
a126154362
一般會員 發表:21 回覆:13 積分:6 註冊:2004-05-30 發送簡訊給我 |
引言:請問如果要傳變數(不是預設值)的話要怎麼用 .....上面紅色部分要為變數a126154362:如果你了解TStrings的Text及Values。我前篇已經告訴 你方法了!我現在引用你要的帳號,密碼,狀態(ID,PWS,TYPE)來說明! msg="ID=AndyChang\r\nPWS=andy\r\nTYPE=OK\r\n"; \r\n 不論你用SendBuf(msg.c_str(), msg.Length());的指令 還是Socket->sendtext(msg); 重點在接收端的處理! 接受端: TStrings* RecMsg; RecMsg = new TStringList(); RecMsg->Text=Socket->ReceiveText(); RecMsg->Values["ID"]; // AndyChang RecMsg->Values["PWS"]; // andy RecMsg->Values["TYPE"]; // OK 只要引用Values[]就可得到資料!若是你沒定義TYPE那結果是NULL! 請參考!Andy Chang |
devademon
一般會員 發表:4 回覆:12 積分:3 註冊:2004-09-02 發送簡訊給我 |
引言:不知道是不是我想得太簡單了,若不用andychang1690大大的方法(TStringList), 那就多加幾個變數..ID,PWS,TYPE,來接收你要的參數, 要傳時再把這些+起來...引言:請問如果要傳變數(不是預設值)的話要怎麼用 .....上面紅色部分要為變數a126154362:如果你了解TStrings的Text及Values。我前篇已經告訴 你方法了!我現在引用你要的帳號,密碼,狀態(ID,PWS,TYPE)來說明! msg="ID=AndyChang\r\nPWS=andy\r\nTYPE=OK\r\n"; \r\nAndy Chang msg = "ID="+ID(變數內容:AndyChang)+"\r\nPWS="+PWS(andy)+"\r\nTYPE="+TYPE(OK)+"\r\n";把msg送出去,接收端收到後再做字串處理... 你要的是這個嗎? 我只會這個...<><>>> |
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
引言:引言:不知道是不是我想得太簡單了,若不用andychang1690大大的方法(TStringList), 那就多加幾個變數..ID,PWS,TYPE,來接收你要的參數, 要傳時再把這些+起來...引言:請問如果要傳變數(不是預設值)的話要怎麼用 .....上面紅色部分要為變數a126154362:如果你了解TStrings的Text及Values。我前篇已經告訴 你方法了!我現在引用你要的帳號,密碼,狀態(ID,PWS,TYPE)來說明! msg="ID=AndyChang\r\nPWS=andy\r\nTYPE=OK\r\n"; \r\nAndy Changmsg = "ID="+ID(變數內容:AndyChang)+"\r\nPWS="+PWS(andy)+"\r\nTYPE="+TYPE(OK)+"\r\n";把msg送出去,接收端收到後再做字串處理... 你要的是這個嗎? 我只會這個...<><>>> >>< face="Verdana, Arial, Helvetica">TStrings的Text及Values是處理接收用的 AnsiString msg; msg="ID=AndyChang\r\nPWS=andy\r\nTYPE=OK\r\n"; SendBuf(msg.c_str(), msg.Length()); 管上面紅字是怎麼東東!重點是你接收的處理! void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { TStrings* RecMsg; AnsiString S1,S2,S3; RecMsg = new TStringList(); RecMsg->Text=Socket->ReceiveText(); S1=RecMsg->Values["ID"]; // 得到AndyChang S2=RecMsg->Values["PWS"]; // 得到andy S3=RecMsg->Values["TYPE"]; // 得到OK if (S3=="OK") // do about S1 or S2 else // do something ..... delete RecMsg; } 請參考!Andy Chang
------
Andy Chang |
devademon
一般會員 發表:4 回覆:12 積分:3 註冊:2004-09-02 發送簡訊給我 |
引言:贊成用 andychang1690 大大的方法, 我想摸過一陣子BCB的人都會較習慣用這個方式來傳資料, 我以前的方法是把要傳的東西結成一個字串, 各個參數間再用一個特殊或較少使用的符號隔開(如'|',';',....), 自己定義第一個是ID,第二個是PWD,第三個是TYPE, 程式的寫法是 msg=ID+";"+PWD+";"+TYPE+";"; 那msg的內容就是"AndyChang;Andy;OK;", 再將msg傳給接收端, 接收瑞以字串接收,再針對';'做字串拆解(在C是用strtok()), 拆得第一個是AndyChang,第二個是Andy,第三個是OK... 但這個方法不但麻煩而且沒有效率,除了簡單易懂外我想沒其它好處, 這也是為什麼建議用 andychang1690 大大的方法的原因TStrings的Text及Values是處理接收用的 AnsiString msg; msg="ID=AndyChang\r\nPWS=andy\r\nTYPE=OK\r\n"; SendBuf(msg.c_str(), msg.Length()); 管上面紅字是怎麼東東!重點是你接收的處理! void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { TStrings* RecMsg; AnsiString S1,S2,S3; RecMsg = new TStringList(); RecMsg->Text=Socket->ReceiveText(); S1=RecMsg->Values["ID"]; // 得到AndyChang S2=RecMsg->Values["PWS"]; // 得到andy S3=RecMsg->Values["TYPE"]; // 得到OK if (S3=="OK") // do about S1 or S2 else // do something ..... delete RecMsg; } 請參考!Andy Chang |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |