關於ClientSocket和ServerSocket使用Part2 失敗 尋找問題0.0 |
缺席
|
rik
一般會員 發表:40 回覆:81 積分:24 註冊:2004-09-24 發送簡訊給我 |
改詳細後@@" 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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
引言:明天去學校在試你寫的程式^^ 家裡沒兩台電腦0.0" 額外有個小問題...會不會是server端我有出錯@@"? 有server端常錯"問題集"嗎-口- 證據:因為我同學 有說 SP2 有問要不要讓此資料過去0.0 (當時當然是選讓他過) 這就表示真的有東西到那台電腦了@@" 還是我說傳空空的東西過去了~.~(煩啊~"~)....這算自言自語嗎= =" 多話的我.....又有疑問= =" 玩家端 是以buf[0]有值過去 伺服器端 有可能把他收到buf[19]去嗎= ="?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 發送簡訊給我 |
程式試過還是失敗-口- 有個奇怪的地方0.0
就是執行 ClientSocket ServerSocket範例時(分多封包傳圖那個)
會動作 但用現在寫的此程式時 不會動...
這表示 因該不是windows 網路相關設定問題(之前還懷疑是不是因為SP2= =") 所以......請問 關於 此2元件 還有哪些該注意的地方@@? [RaynorPao 前輩><" 你成功的檔案可以讓我下載嗎QQ?]
我覺得...自己已經搞到 ""找找兩者不同的地方""
這種地步了><" [原來兩個元件也可以玩這麼久-口-.......1個月過去了>"<]
------
時與不時的撿起身旁的拼圖碎片 不懂的部分 半解的部分 就像一塊拼圖 留於腦中 等待拼出完美解答的一天 這就是我的思路 我的創作方法 而我也接受 這作法所帶來的"代價" - 時間 |
mickey56
一般會員 發表:4 回覆:7 積分:2 註冊:2002-04-18 發送簡訊給我 |
有個小問題@@"
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 為接收位元,你就知道他接收了多少資料 我也不是很懂,胡亂瞎說...大家切磋啦!!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |