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

請問網路作Byte傳送!!

答題得分者是:brook
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-05 17:55:48 IP:210.71.xxx.xxx 未訂閱
請問當在作網路傳送時以Byte傳,從Client端傳送到Server端,反之! 舉例:比如 Client端傳送Byte 如:255 資料給 Server 端時,在Server端要ShowMessage 11111111 的資料!但是Server端的Edit要顯示出255,也就是先是到Edit端的資料是不變的。
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-05 22:00:21 IP:61.221.xxx.xxx 未訂閱
引言: 請問當在作網路傳送時以Byte傳,從Client端傳送到Server端,反之! 舉例:比如 Client端傳送Byte 如:255 資料給 Server 端時,在Server端要ShowMessage 11111111 的資料!但是Server端的Edit要顯示出255,也就是先是到Edit端的資料是不變的。
LI 你好: 請參考以下的範例程式碼 < class="code"> // Client __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ClientSocket1->Address="192.168.1.2"; ClientSocket1->Port=4000; ClientSocket1->Open(); } __fastcall TForm1::~TForm1() { ClientSocket1->Close(); } void __fastcall TForm1::Button1Click(TObject *Sender) { BYTE bData=255; ClientSocket1->Socket->SendBuf(&bData, 1); } // Server #include "IdGlobal.hpp" __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ServerSocket1->Port=4000; ServerSocket1->Open(); } __fastcall TForm1::~TForm1() { ServerSocket1->Close(); } void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { BYTE bData; Socket->ReceiveBuf(&bData, 1); ShowMessage(IntToBin(bData)); Edit1->Text=IntToStr(bData); } 備註: 另外,本站還有很多現成的範例程式碼,建議你善用搜尋的功能 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-06 19:42:25 IP:210.71.xxx.xxx 未訂閱
void __fastcall TForm1::Button1Click(TObject *Sender) { BYTE bData=255; ClientSocket1->Socket->SendBuf(&bData, 1); } 那假如我要用物件多個Edit,直接把255打上去,隨時可以作變更不用到程式裡面去修改可以嗎?那我要在 ClientSocket1->Socket->SendBuf(&bData, 1); 上如何去作修改呢?疑惑的小妹!!!
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-12 17:37:45 IP:210.71.xxx.xxx 未訂閱
謝謝大哥的回應!! 小妹還有一小問題同上:假如我要把轉換完的16進制 ,用二個或更多個Edit作加密傳送,可以這樣做嗎?
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-13 18:55:36 IP:218.160.xxx.xxx 未訂閱
[quote] 謝謝大哥的回應!! 小妹還有一小問題同上:假如我要把轉換完的16進制 ,用二個或更多個Edit作加密傳送,可以這樣做嗎? /quote]     
     void __fastcall TForm1::Button1Click(TObject *Sender)
{
/*
Edit1->Text = 255;
Edit2->Text = 1;
Edit3->Text = 2;
Edit4->Text = 3;
Edit5->Text = 4;
*/      BYTE bData[5];
  bData[0]= (BYTE) atoi(Edit1->Text.c_str());
  bData[1]= (BYTE) atoi(Edit2->Text.c_str());
  bData[2]= (BYTE) atoi(Edit3->Text.c_str());
  bData[3]= (BYTE) atoi(Edit4->Text.c_str());
  bData[4]= (BYTE) atoi(Edit5->Text.c_str());
  ClientSocket1->Socket->SendBuf(bData, 5);
}
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-17 12:26:17 IP:210.71.xxx.xxx 未訂閱
<引言>   BYTE bData[5];   bData[0]= (BYTE) atoi(Edit1->Text.c_str());   bData[1]= (BYTE) atoi(Edit2->Text.c_str());   bData[2]= (BYTE) atoi(Edit3->Text.c_str());   bData[3]= (BYTE) atoi(Edit4->Text.c_str());   bData[4]= (BYTE) atoi(Edit5->Text.c_str());   ClientSocket1->Socket->SendBuf(bData, 5);     那請問一下:假如我要對bData作加密的方式作傳送,是否可以這樣加密,還是有相關的範例呢?   那我可以對下列二個陣列作加密或更多的陣列宣告作加密呢?   bData[0]= (BYTE) atoi(Edit1->Text.c_str());   bData[1]= (BYTE) atoi(Edit2->Text.c_str());   ........    感謝各位大哥哥的指教~~  發表人 -
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-17 16:15:21 IP:218.160.xxx.xxx 未訂閱
不好意思,看了你問的問題,我還是不明白,你要的是什麼? 假如寫清楚一點,應該很容易解決,就像輸入什麼?,輸出什麼?,結果是什麼? 你提供較完整的資訊,我們才知道你的問題所在.
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-17 19:29:51 IP:210.71.xxx.xxx 未訂閱
Sorry呀!可能是我描述的不清楚,以下的範例:我是想對 bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); ....或更多的bData[2]..... 作加密但是... Edit12->Text=bData[0] ',' bData[1];當加密完之後送給Server端解密之後 收到的值根原本不一樣~~ 例如:我在Edit4,Edit5分別輸入255,166值。經過~~ Edit12->Text=bData[0] ',' bData[1]; char tmp_buf[65535]; EnCryptStr(Edit12->Text.c_str(),tmp_buf,NULL); Edit12->Text=tmp_buf,NULL; ClientSocket1->Socket->SendText(Edit12->Text); 傳送之後,在Server端收到的另一Edit應該是顯示255,166的值呀~(但不是」)~我不清楚是不是當在對陣列加密的方式,是不是這樣寫才對呀!! 請各位大哥解惑一下~謝謝~ BYTE bData; try { BYTE bData[2]; bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); Edit12->Text=bData[0] ',' bData[1]; char tmp_buf[65535]; EnCryptStr(Edit12->Text.c_str(),tmp_buf,NULL); Edit12->Text=tmp_buf,NULL; ClientSocket1->Socket->SendText(Edit12->Text); }
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-17 20:01:31 IP:218.167.xxx.xxx 未訂閱
引言: Sorry呀!可能是我描述的不清楚,以下的範例:我是想對 bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); ....或更多的bData[2]..... 作加密但是... Edit12->Text=bData[0] ',' bData[1];當加密完之後送給Server端解密之後 收到的值根原本不一樣~~ 例如:我在Edit4,Edit5分別輸入255,166值。經過~~ Edit12->Text=bData[0] ',' bData[1]; char tmp_buf[65535]; EnCryptStr(Edit12->Text.c_str(),tmp_buf,NULL); Edit12->Text=tmp_buf,NULL; ClientSocket1->Socket->SendText(Edit12->Text); 傳送之後,在Server端收到的另一Edit應該是顯示255,166的值呀~(但不是」)~我不清楚是不是當在對陣列加密的方式,是不是這樣寫才對呀!! 請各位大哥解惑一下~謝謝~ BYTE bData; try { BYTE bData[2]; bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); Edit12->Text=bData[0] ',' bData[1]; char tmp_buf[65535]; EnCryptStr(Edit12->Text.c_str(),tmp_buf,NULL); Edit12->Text=tmp_buf,NULL; ClientSocket1->Socket->SendText(Edit12->Text); }
1.你要先測加密和解密,先不經網路,把問題簡單化,不知加密,解密後答案對不對? 2.假如加解密沒問題,再測不加密傳輸是不是可能資料正確無誤的傳輸給對方? 假如可正確的傳給對方,再來才測加密傳輸. 3. ClientSocket1->Socket->SendText(Edit12->Text); 這個指令用ClientSocket1->Socket->SendBuf(bData, 5);代替, Server端也要注意一下. 一般加密之後的資料絕大部份己不是字串形式,很可能會包含0x00在中間.
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-18 18:47:21 IP:210.71.xxx.xxx 未訂閱
引言:
引言: Sorry呀!可能是我描述的不清楚,以下的範例:我是想對 bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); ....或更多的bData[2]..... 作加密但是... Edit12->Text=bData[0] ',' bData[1];當加密完之後送給Server端解密之後 收到的值根原本不一樣~~ 例如:我在Edit4,Edit5分別輸入255,166值。經過~~ Edit12->Text=bData[0] ',' bData[1]; char tmp_buf[65535]; EnCryptStr(Edit12->Text.c_str(),tmp_buf,NULL); Edit12->Text=tmp_buf,NULL; ClientSocket1->Socket->SendText(Edit12->Text); 傳送之後,在Server端收到的另一Edit應該是顯示255,166的值呀~(但不是」)~我不清楚是不是當在對陣列加密的方式,是不是這樣寫才對呀!! 請各位大哥解惑一下~謝謝~ BYTE bData; try { BYTE bData[2]; bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); Edit12->Text=bData[0] ',' bData[1]; char tmp_buf[65535]; EnCryptStr(Edit12->Text.c_str(),tmp_buf,NULL); Edit12->Text=tmp_buf,NULL; ClientSocket1->Socket->SendText(Edit12->Text); }
1.你要先測加密和解密,先不經網路,把問題簡單化,不知加密,解密後答案對不對? 2.假如加解密沒問題,再測不加密傳輸是不是可能資料正確無誤的傳輸給對方? 假如可正確的傳給對方,再來才測加密傳輸. 3. ClientSocket1->Socket->SendText(Edit12->Text); 這個指令用ClientSocket1->Socket->SendBuf(bData, 5);代替, Server端也要注意一下. 一般加密之後的資料絕大部份己不是字串形式,很可能會包含0x00在中間.
謝謝大哥的回應~~ 那我可以對以下陣列做二個以上傳嗎?~傳給Server端呀~~反之互傳~ bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); ....或更多的bData[2]..... 而Server 端可收到二個陣列或以上所傳來的資料嗎?
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-02-18 21:37:10 IP:61.222.xxx.xxx 未訂閱
引言: 謝謝大哥的回應~~ 那我可以對以下陣列做二個以上傳嗎?~傳給Server端呀~~反之互傳~ bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); ....或更多的bData[2]..... 而Server 端可收到二個陣列或以上所傳來的資料嗎?
可以,不知是否方便上傳你的程式或更清楚說明你的問題所在,你測的結果,如此才能對症下藥.
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-02-18 22:05:21 IP:210.71.xxx.xxx 未訂閱
引言:
引言: 謝謝大哥的回應~~ 那我可以對以下陣列做二個以上傳嗎?~傳給Server端呀~~反之互傳~ bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); ....或更多的bData[2]..... 而Server 端可收到二個陣列或以上所傳來的資料嗎?
可以,不知是否方便上傳你的程式或更清楚說明你的問題所在,你測的結果,如此才能對症下藥.
Client端: void __fastcall TForm1::Button2Click(TObject *Sender) { BYTE bData; try { BYTE bData[4]; bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); bData[2]= (BYTE) atoi(Edit6->Text.c_str()); bData[3]= (BYTE) atoi(Edit7->Text.c_str()); ClientSocket1->Socket->SendBuf(&bData,4); } 接收端: void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { BYTE bData; Socket->ReceiveBuf(&bData, 4); Edit3->Text=(bData); } Server端: void __fastcall TForm1::Button2Click(TObject *Sender) { BYTE bData; try { BYTE bData[4]; bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); bData[2]= (BYTE) atoi(Edit6->Text.c_str()); bData[3]= (BYTE) atoi(Edit7->Text.c_str()); ServerSocket1->Socket->Connections[0]->SendBuf(bData, 4); } 接收端: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { BYTE bData; Socket->ReceiveBuf(&bData, 4); Edit3->Text=IntToStr(bData); } 這樣是否正確~~~~
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-02-19 18:41:28 IP:61.222.xxx.xxx 未訂閱
Client端: void __fastcall TForm1::Button2Click(TObject *Sender) {   BYTE bData;   try   {   BYTE bData[4];   bData[0]= (BYTE) atoi(Edit4->Text.c_str());   bData[1]= (BYTE) atoi(Edit5->Text.c_str());   bData[2]= (BYTE) atoi(Edit6->Text.c_str());   bData[3]= (BYTE) atoi(Edit7->Text.c_str()); ClientSocket1->Socket->SendBuf(bData,4); } 接收端: void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { BYTE bData[5]; Socket->ReceiveBuf(&bData, 4); bData[4] = 0x00; //加上字串結束字元 Edit3->Text=(bData); } Server端: void __fastcall TForm1::Button2Click(TObject *Sender) { try { BYTE bData[4]; bData[0]= (BYTE) atoi(Edit4->Text.c_str()); bData[1]= (BYTE) atoi(Edit5->Text.c_str()); bData[2]= (BYTE) atoi(Edit6->Text.c_str()); bData[3]= (BYTE) atoi(Edit7->Text.c_str()); ServerSocket1->Socket->Connections[0]->SendBuf(bData, 4); } 接收端: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { BYTE bData[5]; Socket->ReceiveBuf(bData, 4); bData[4] = 0x00; Edit3->Text=IntToStr(bData); } 紅色的部份有修正,因沒真正去run,可能還有bug,你先測一下,假如有問題再討論.
系統時間:2024-05-13 16:58:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!