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

IdTCPserver跟IdTCPClient的問題

缺席
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-11-22 17:14:19 IP:220.140.xxx.xxx 訂閱
第一次寫跟有網路有關的程式,有很多地方不清處。

想問一下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 重新編輯於 2009-11-22 17:15:19, 註解 無‧
tokiama 重新編輯於 2009-11-22 21:54:05, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-11-23 09:24:29 IP:203.75.xxx.xxx 未訂閱
不知道你用的是 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-11-23 13:25:36 IP:120.107.xxx.xxx 訂閱
我用的是Indy9的18,9.0.18版。這個版本是有問題的?


問一個可能有關係的問題。

當我連接IdTCPServer的時後,用 IdTCPClient1.Connect; 去連,只要我連上是不是就會觸發 IdTCPServer 的 OnConnect 事件?還要做其它動作才會觸發?
編輯記錄
tokiama 重新編輯於 2009-11-23 19:29:23, 註解 無‧
tokiama 重新編輯於 2009-11-23 22:29:22, 註解 無‧
系統時間:2024-04-20 16:51:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!