ServerSocket的Connections問題 |
答題得分者是:RaynorPao
|
stickitout
一般會員 發表:15 回覆:8 積分:4 註冊:2003-06-03 發送簡訊給我 |
各位大大好!小弟現在有一個問題。
小弟目前的構想是這個樣子的…… 我先將ServerSocket開啟在Listening的狀態,再將Client連線到Server。 而ServerSocket在收到Client的連線之後,會RemoteHost加入CheckListBox 之中。也就是說…第一個加入CheckListBox的Item就是Connection[0]。 小弟的問題來了……當我將CheckListBox中的某個Item刪除之後,我就沒有 辦法辨認它是第幾條Connection……(就是說,如果刪除到只剩一個Item, 它又是Connection幾呢?)Server有沒有辦法判別第i條Connections的 Hostname與IP位址呢?? 謝謝各位大大!!
|
sumyan
一般會員 發表:0 回覆:1 積分:0 註冊:2003-08-30 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 各位大大好!小弟現在有一個問題。 小弟目前的構想是這個樣子的…… 我先將ServerSocket開啟在Listening的狀態,再將Client連線到Server。 而ServerSocket在收到Client的連線之後,會RemoteHost加入CheckListBox 之中。也就是說…第一個加入CheckListBox的Item就是Connection[0]。 小弟的問題來了……當我將CheckListBox中的某個Item刪除之後,我就沒有 辦法辨認它是第幾條Connection……(就是說,如果刪除到只剩一個Item, 它又是Connection幾呢?)Server有沒有辦法判別第i條Connections的 Hostname與IP位址呢?? 謝謝各位大大!!stickitout 你好: 請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
chance
一般會員 發表:19 回覆:9 積分:5 註冊:2003-08-18 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不好意思~~~~小弟這幾天試了一下~~~~還是不知道如何使用 Socket.SocketHandle 去判別哪一條Connections的IP與HostName是什麼~~?? 我試著把它ShowMessage出來,但是沒有結果……在此請教各位大大! 謝謝!chance 你好: 我寫了一個小小的範例,你先參考看看 < class="code"> // Server __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ServerSocket1->Port=4000; ServerSocket1->Open(); } __fastcall TForm1::~TForm1() { ServerSocket1->Close(); } void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { AnsiString szRemoteIP=Socket->RemoteAddress; AnsiString szRemoteHost=Socket->RemoteHost; AnsiString szSocketHandle=IntToStr(Socket->SocketHandle); AnsiString szClientList=szRemoteIP "," szRemoteHost "," szSocketHandle; int i=ListBox1->Items->IndexOf(szClientList); if(i<0) { ListBox1->Items->Add(szClientList); } } void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender, TCustomWinSocket *Socket) { AnsiString szRemoteIP=Socket->RemoteAddress; AnsiString szRemoteHost=Socket->RemoteHost; AnsiString szSocketHandle=IntToStr(Socket->SocketHandle); AnsiString szClientList=szRemoteIP "," szRemoteHost "," szSocketHandle; int i=ListBox1->Items->IndexOf(szClientList); if(i>=0) { ListBox1->Items->Delete(i); } } void __fastcall TForm1::Button1Click(TObject *Sender) { if(Edit1->Text=="") Edit1->Text="Testing"; if(ListBox1->Count<=0) return; if(ListBox1->ItemIndex<0) ListBox1->ItemIndex=0; TStringList *sl=new TStringList; sl->CommaText=ListBox1->Items->Strings[ListBox1->ItemIndex]; for(int i=0; i
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
pyusi
一般會員 發表:6 回覆:2 積分:1 註冊:2004-10-22 發送簡訊給我 |
RaynorPao大哥及各位前輩你好:
我試了你的範例,Client程式在//Server程式完後繼續寫(如下),
// Client
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ClientSocket1->Address="192.168.1.1";
ClientSocket1->Port=4000;
ClientSocket1->Open();
}
__fastcall TForm1::~TForm1()
{
ClientSocket1->Close();
} BCB6.0會無法Compile(Run)過,出現如下error message:
[C++ Error] Unit1.cpp(76): E2171 Body has already been defined for function '_fastcall TForm1::TForm1(TComponent *)'
[C++ Error] Unit1.cpp(86): E2171 Body has already been defined for function '_fastcall TForm1::~TForm1()' 請問是否//Client寫在另一個BCB的project? 若是如此,在另一BCB如下也compile不過,且error message : "Asynchronous 00610 error"
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ClientSocket1->Address="192.168.1.1";
ClientSocket1->Port=4001;
ClientSocket1->Open();
} 所以請教Ray大哥及各位前輩該如何解決? 小妹我是BCB新手,發問蠢問題,敬請見諒。
感謝各位!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |