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

關於ClientSocket和ServerSocket使用Part2 失敗 尋找問題0.0

缺席
rik
一般會員


發表:40
回覆:81
積分:24
註冊:2004-09-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-29 13:48:49 IP:163.13.xxx.xxx 未訂閱
改詳細後@@" player端 //------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ClientSocket1->Address="163.XX.XXX.XX"; ClientSocket1->Port=4000; ClientSocket1->Open(); } __fastcall TForm1::~TForm1() { ClientSocket1->Close(); } //------------------------------------------------------------------ void __fastcall TForm1::sendClick(TObject *Sender) { byte tmpbuf[20]; tmpbuf[0]=0; ClientSocket1->Socket->SendBuf(tmpbuf,20); } server端 //------------------------------------------------------------------ __fastcall Tserver::Tserver(TComponent* Owner) : TForm(Owner) { ServerSocket1->Port=4000; ServerSocket1->Open(); } __fastcall Tserver::~Tserver() { ServerSocket1->Close(); } //------------------------------------------------------------------ void __fastcall Tserver::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { byte tmpbuf[20]; ServerSocket->Socket->ReceiveBuf(tmpbuf,20); if(tmpbuf[0]==0){ getmessage->Text="good"; //還是沒出現0.0 } } 程式真的只有這樣-口-"" 因為沒有用MYPACK[自宣告] 或 TMemoryStream 等 方法 所以此程式因該可以算 最基本的基本練習-口-" 對於回應 我還有問題@@" 另外留言下面@@" 怕太亂-口-" 發表人 - rik 於 2004/11/29 22:17:25
------
時與不時的撿起身旁的拼圖碎片

不懂的部分 半解的部分 就像一塊拼圖
留於腦中 等待拼出完美解答的一天

這就是我的思路 我的創作方法
而我也接受 這作法所帶來的"代價" - 時間
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-29 21:44:06 IP:211.20.xxx.xxx 未訂閱
引言: player端 void __fastcall TForm1::sendClick(TObject *Sender) { byte tmpbuf[20]; tmpbuf[0]=0; ClientSocket1->Socket->SendBuf(tmpbuf,20); } server端 void __fastcall Tserver::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { byte tmpbuf[20]; Socket->ReceiveBuf(tmpbuf,20); if(tmpbuf[0]==0){ getmessage->Text="good"; //還是沒出現0.0 } } 我的用法有錯誤嗎@@?
rik 你好:
(1)小弟我大概試過你的程式碼,應該是沒有問題,不過也許是你漏掉了什麼,
   所以我把完整的程式碼貼上,讓你參考看看是不是少了什麼?
// >>>>>>>>>> >
    < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --    發表人 - RaynorPao 於 2004/11/29  22:12:45
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
rik
一般會員


發表:40
回覆:81
積分:24
註冊:2004-09-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-29 22:38:58 IP:211.76.xxx.xxx 未訂閱
引言:
rik 你好:
(1)小弟我大概試過你的程式碼,應該是沒有問題,不過也許是你漏掉了什麼,
   所以我把完整的程式碼貼上,讓你參考看看是不是少了什麼?
// >>>>通常在宣告>>>>>>>>>> >
    < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --    發表人 - RaynorPao 於 2004/11/29  22:12:45
明天去學校在試你寫的程式^^ 家裡沒兩台電腦0.0" 額外有個小問題...會不會是server端我有出錯@@"? 有server端常錯"問題集"嗎-口- 證據:因為我同學 有說 SP2 有問要不要讓此資料過去0.0 (當時當然是選讓他過) 這就表示真的有東西到那台電腦了@@" 還是我說傳空空的東西過去了~.~(煩啊~"~)....這算自言自語嗎= =" 多話的我.....又有疑問= =" 玩家端 是以buf[0]有值過去 伺服器端 有可能把他收到buf[19]去嗎= ="?
------
時與不時的撿起身旁的拼圖碎片

不懂的部分 半解的部分 就像一塊拼圖
留於腦中 等待拼出完美解答的一天

這就是我的思路 我的創作方法
而我也接受 這作法所帶來的"代價" - 時間
rik
一般會員


發表:40
回覆:81
積分:24
註冊:2004-09-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-30 20:08:47 IP:211.76.xxx.xxx 未訂閱
程式試過還是失敗-口-    有個奇怪的地方0.0 就是執行 ClientSocket ServerSocket範例時(分多封包傳圖那個) 會動作 但用現在寫的此程式時 不會動... 這表示 因該不是windows 網路相關設定問題(之前還懷疑是不是因為SP2= =")    所以......請問 關於 此2元件 還有哪些該注意的地方@@?    [RaynorPao 前輩><"  你成功的檔案可以讓我下載嗎QQ?] 我覺得...自己已經搞到 ""找找兩者不同的地方"" 這種地步了><" [原來兩個元件也可以玩這麼久-口-.......1個月過去了>"<]
------
時與不時的撿起身旁的拼圖碎片

不懂的部分 半解的部分 就像一塊拼圖
留於腦中 等待拼出完美解答的一天

這就是我的思路 我的創作方法
而我也接受 這作法所帶來的"代價" - 時間
mickey56
一般會員


發表:4
回覆:7
積分:2
註冊:2002-04-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-10 14:33:11 IP:220.160.xxx.xxx 未訂閱
有個小問題@@" Socket->ReceiveBuf(buf, 20); 和 ServerSocket->Socket->ReceiveBuf(buf,20); 一樣嗎@@? 據我了解 Socket跟ServerSocket->Socket是不一樣的 ServerSocket->Socket 是主要接聽的Socket 而Socket是跟Client連線的Socket,主要是ASocket 不一樣 例如你在onClientRead 中會傳入一個Socket 那個就是目前讀取到Client端相對應的Socket,那有很大的不同ㄛ.... BYTE buf[20]={0}; 通常在宣告buffer時 一定要歸0嗎@@?(我知道歸0是好習慣@@") 我建議歸零,至少你在Debug的時候可以確實知道你傳送什麼,接收什麼 而且Buffer[20]個,你就歸零20個,不要只宣告你要傳的那個位元 你可以試看看ClientSocket1->Socket->SendBuf(tmpbuf,20)改為 ClientSocket1->Socket->SendBuf(tmpbuf,1)然後在 Socket->ReceiveBuf(buf, 20) 改為 i=Socket->ReceiveBuf(buf, 20) if(i==1){} i 為接收位元,你就知道他接收了多少資料 我也不是很懂,胡亂瞎說...大家切磋啦!!
系統時間:2024-05-05 22:04:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!