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

詢問一個有關ServerSocket端傳回client端的問題,雖然之前問過了

缺席
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-11 23:52:00 IP:211.76.xxx.xxx 未訂閱
Dears:   之前我有詢問過大家一個問題:如果同時有很多client端連線進server端,而server端只要傳訊息給一個指定的client端,該如何處理呢?   許多人所提供的意見是:可以依據 Client 端的 IP 來判斷是否該傳訊息。 也就是使用Socket->RemoteAddress來擷取client的IP來做判斷。不過,Socket->RemoteAddress只能在ServerSocket1ClientConnect這個enents才能使用。不能在TForm1::ServerSocket1ClientRead這邊使用。 目前,小弟我的問題是這樣的: 我會有很多client會同時或非同時連上server。然後client連上之後,他會定期丟一串封包給server,在封包內容中會有包含client的識別ID。每一個ID都不會一樣。 所以,現在我想要的功能是,在ServerSocket1ClientRead觸發的時候,我能夠知道client它的Connection[]值。因為,我只有在收到封包的時候才能之道client的識別ID。然後利用識別ID去儲存對應的client的Connection[]值。 然後,當我要對某一個client下命令時,我只要知道他的ID就可以用ServerSocket1->Socket->Connections[0]->SendText("test");去對他下命令。 不知道這樣的方式有什麼語法的處理呢?還是各位大大有其他更好的建議呢? 懇請各位大大提供您寶貴的意見~thanks~ 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-12 00:01:30 IP:61.221.xxx.xxx 未訂閱
引言: Dears: 之前我有詢問過大家一個問題:如果同時有很多client端連線進server端,而server端只要傳訊息給一個指定的client端,該如何處理呢? 許多人所提供的意見是:可以依據 Client 端的 IP 來判斷是否該傳訊息。 也就是使用Socket->RemoteAddress來擷取client的IP來做判斷。不過,Socket->RemoteAddress只能在ServerSocket1ClientConnect這個enents才能使用。不能在TForm1::ServerSocket1ClientRead這邊使用。 目前,小弟我的問題是這樣的: 我會有很多client會同時或非同時連上server。然後client連上之後,他會定期丟一串封包給server,在封包內容中會有包含client的識別ID。每一個ID都不會一樣。 所以,現在我想要的功能是,在ServerSocket1ClientRead觸發的時候,我能夠知道client它的Connection[]值。因為,我只有在收到封包的時候才能之道client的識別ID。然後利用識別ID去儲存對應的client的Connection[]值。 然後,當我要對某一個client下命令時,我只要知道他的ID就可以用ServerSocket1->Socket->Connections[0]->SendText("test");去對他下命令。 不知道這樣的方式有什麼語法的處理呢?還是各位大大有其他更好的建議呢? 懇請各位大大提供您寶貴的意見~thanks~ 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
leeli 你好: 也可以 SocketHandle 來分辨是哪一個 Client src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-12 00:48:04 IP:211.76.xxx.xxx 未訂閱
引言: leeli 你好: 也可以 SocketHandle 來分辨是哪一個 Client http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36597 -- Enjoy Researching & Developing --
Dear RaynorPao: 您說的方式我有大概先看一下了,不過還沒有下去試。 不過,難道沒有可以在ServerSocket1ClientRead這邊直接就可以知道Connection[]值的方式嗎? 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-12 00:59:12 IP:211.76.xxx.xxx 未訂閱
Sorry,在強調一點:   小弟我想要利用識別ID來對應回傳的client端。而這組ID必須要在收到client傳過來的封包中才能得到~所以我必須要在ServerSocket1ClientRead事件中去解析封包內容後才能得知對應的client。&同樣一個ID的client他可能會常發生斷線重新連上server的情形(因為使用無線網路的關係),且每次client端所分配到的IP會不一樣。以上是我目前的情況。   因為大大所說的Socket->RemoteAddress這個語法好像不能在ServerSocket1ClientRead這個事件中使用說~ 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
pdcmg
一般會員


發表:3
回覆:22
積分:20
註冊:2004-11-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-18 09:48:24 IP:61.57.xxx.xxx 未訂閱
引言: Sorry,在強調一點: 小弟我想要利用識別ID來對應回傳的client端。而這組ID必須要在收到client傳過來的封包中才能得到~所以我必須要在ServerSocket1ClientRead事件中去解析封包內容後才能得知對應的client。&同樣一個ID的client他可能會常發生斷線重新連上server的情形(因為使用無線網路的關係),且每次client端所分配到的IP會不一樣。以上是我目前的情況。 因為大大所說的Socket->RemoteAddress這個語法好像不能在ServerSocket1ClientRead這個事件中使用說~ 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
在Server端的ClientRead內可以使用Socket->RemoteAddress啊~ void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { AnsiString RIP=Socket->RemoteAddress; AnsiString RHost=Socket->RemoteHost; AnsiString SH=IntToStr(Socket->SocketHandle); for(int k=0; k < ServerSocket1-> Socket->ActiveConnections; k ) { if(ServerSocket1->Socket->Connections[k]->RemoteAddress==RIP && ServerSocket1->Socket->Connections[k]->RemoteHost==RHost && ServerSocket1->Socket->Connections[k]->SocketHandle==StrToInt(SH)) { ServerSocket1->Socket->Connections[k]->SendText("你要傳的資料"); } } } 發表人 - pdcmg 於 2004/11/18 09:50:29 發表人 - pdcmg 於 2004/11/18 17:06:57
系統時間:2024-04-27 3:04:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!