IdTCPserver跟IdTCPClient的問題 |
缺席
|
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
第一次寫跟有網路有關的程式,有很多地方不清處。
想問一下IdTCPserver跟IdTCPClient兩個要怎麼連? 爬了文後,自己導出來的結果是用 IdTCPClient1.Connect(); 來連對不對? 可是,不管是 IdTCPClient1.Connect(); 或是IdTCPClient1.Connect; 我都會失敗。 有看到 IdTCPClient1.Connect(3000); ,有人這樣可以,但是我不管後面用什麼都會失敗。 執行會說 IdStack.pas 的這一行有問題 raise EIdSocketError.CreateError(AErr, WSTranslateSocketErrorMsg(AErr)); 可以告訴我一下我是哪裡錯了嗎? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 在次爬文得到下面結果: [code delphi] procedure TForm1.FormCreate(Sender: TObject); begin idtcpserver1.Active:=True;//啟動IdTCPServer idtcpserver1.Bindings.Add.IP:='127.0.0.1';//設定IP idtcpserver1.Bindings.Add.Port:=80;//設定Port showmessage('IdTCPServer設定完成'); end; procedure TForm1.Button1Click(Sender: TObject); var v:variant; begin IdTCPClient1.Host:='127.0.0.1'; IdTCPClient1.Port:=80;//80以外會出錯 IdTCPClient1.Connect; showmessage('連線測試'); v:=idtcpclient1.Connected; showmessage(v); end; [/code] 我的 idtcpclient1.Connected 回傳的結果是 True 可是我的I dTCPServer1 的 OnConnect事件卻沒有處發.... 請問一下可以告訴我錯在哪嗎?還有我的 IdTCPClient1.Port 為什麼不能用80以外的數字? 拜託大家一下,告訴我我錯在哪? |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
不知道你用的是 Indy的哪個版本,我目前沒有測出你所說的問題。
雖然我用的是BCB,但程式內容應該是差不多,以下為可正確執行的測試內容: [code cpp] // BCB6 Indy 10.2.3 void __fastcall TForm1::Button1Click(TObject *Sender) { IdTCPServer1->Bindings->Add(); IdTCPServer1->Bindings->Items[0]->IP = "127.0.0.1"; IdTCPServer1->Bindings->Items[0]->Port = 50; IdTCPServer1->Active = true; ShowMessage("TCP Server Set OK!"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { IdTCPClient1->Host = "127.0.0.1"; IdTCPClient1->Port = 50; IdTCPClient1->Connect(); if (IdTCPClient1->Connected()) ShowMessage("Connect OK!"); } [/code] ===================引 用 tokiama 文 章=================== 第一次寫跟有網路有關的程式,有很多地方不清處。 想問一下IdTCPserver跟IdTCPClient兩個要怎麼連? 爬了文後,自己導出來的結果是用 IdTCPClient1.Connect(); 來連對不對? 可是,不管是 IdTCPClient1.Connect(); 或是IdTCPClient1.Connect; 我都會失敗。 有看到 IdTCPClient1.Connect(3000); ,有人這樣可以,但是我不管後面用什麼都會失敗。 執行會說 IdStack.pas 的這一行有問題 raise EIdSocketError.CreateError(AErr, WSTranslateSocketErrorMsg(AErr)); 可以告訴我一下我是哪裡錯了嗎? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 在次爬文得到下面結果: [code delphi] procedure TForm1.FormCreate(Sender: TObject); begin idtcpserver1.Active:=True;//啟動IdTCPServer idtcpserver1.Bindings.Add.IP:='127.0.0.1';//設定IP idtcpserver1.Bindings.Add.Port:=80;//設定Port showmessage('IdTCPServer設定完成'); end; procedure TForm1.Button1Click(Sender: TObject); var v:variant; begin IdTCPClient1.Host:='127.0.0.1'; IdTCPClient1.Port:=80;//80以外會出錯 IdTCPClient1.Connect; showmessage('連線測試'); v:=idtcpclient1.Connected; showmessage(v); end; [/code] 我的 idtcpclient1.Connected 回傳的結果是 True 可是我的I dTCPServer1 的 OnConnect事件卻沒有處發.... 請問一下可以告訴我錯在哪嗎?還有我的 IdTCPClient1.Port 為什麼不能用80以外的數字? 拜託大家一下,告訴我我錯在哪? |
tokiama
一般會員 發表:34 回覆:60 積分:23 註冊:2009-04-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |