全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1302
推到 Plurk!
推到 Facebook!

Socket Connection的問題

答題得分者是:RaynorPao
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-04 09:24:06 IP:218.162.xxx.xxx 未訂閱
請問~當有人連線進來時 電腦會給此電腦一個handle值 而且每一個連線都會以陣列型式儲存起來 如:ServerSocket->Socket->Connection[] 我可以依照handle值由大到小將此陣列作一個簡單的排序嗎? 可以的話?要如何下手 不行的話?什麼原因? 謝謝~~~
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-04 09:48:12 IP:203.73.xxx.xxx 未訂閱
引言: 請問~當有人連線進來時 電腦會給此電腦一個handle值 而且每一個連線都會以陣列型式儲存起來 如:ServerSocket->Socket->Connection[] 我可以依照handle值由大到小將此陣列作一個簡單的排序嗎? 可以的話?要如何下手 不行的話?什麼原因? 謝謝~~~ < face="Verdana, Arial, Helvetica">
TIY~2 你好:
(1)如果只是單純的對 handle 值做排序,可以把它當成對很多整數做排序,善
   用本站的搜尋功能,就可以找到很多好用的排序方法 (例如: Bubble Sort,
   Quick Sort,....)
(2)可是,為什麼要對 Socket handle 做排序呢?? 據小弟我所知,有關 Socket
   Connection 的順序,是由 TServerWinSocket 自己在控制的,應該是沒有辦
   法更改它的順序 (這點我不太確定,沒試過,你可以試試看)
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-04 15:07:43 IP:218.162.xxx.xxx 未訂閱
可是,為什麼要對 Socket handle 做排序呢?? 據小弟我所知,有關 Socket Connection 的順序,是由 TServerWinSocket 自己在控制的,應該是沒有辦 法更改它的順序 (這點我不太確定,沒試過,你可以試試看) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 我試不出來所以才來求救的< >因為排序後就更容易作搜尋了阿< > 真的不能嗎?< > 這樣應該可以了吧< >
RaynorPao
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-04 20:26:51 IP:61.221.xxx.xxx 未訂閱
引言: 可是,為什麼要對 Socket handle 做排序呢?? 據小弟我所知,有關 Socket Connection 的順序,是由 TServerWinSocket 自己在控制的,應該是沒有辦 法更改它的順序 (這點我不太確定,沒試過,你可以試試看) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 我試不出來所以才來求救的< >因為排序後就更容易作搜尋了阿< > 真的不能嗎?< > 這樣應該可以了吧< >
TIY~2 你好: 上面那句話是真的嗎?? 小弟我認為不見得吧 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-04 21:43:36 IP:218.162.xxx.xxx 未訂閱
有排序的~不是用二元搜尋就會很快嗎? 甚至其他搜尋方法~ 難道不是嗎? 不知道你有何見解 因為我想知道目前傳送訊息過來的連線是在Socket->Connection[]此陣列中那一個位置中 這樣我才可以用 Socket->connection[]->SendText(); 不是嗎?
RaynorPao
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-04 22:15:46 IP:61.221.xxx.xxx 未訂閱
引言: 有排序的~不是用二元搜尋就會很快嗎? 甚至其他搜尋方法~ 難道不是嗎? 不知道你有何見解 因為我想知道目前傳送訊息過來的連線是在Socket->Connection[]此陣列中那一個位置中 這樣我才可以用 Socket->connection[]->SendText(); 不是嗎? < face="Verdana, Arial, Helvetica">
TIY~2 你好:
還是一句老話,據小弟我所知~~應該是沒有辦法重新排序的;不過,還是有其他
的方法可以辦得到的,例如: 你可以參照我上一次提供給你的連結文章中的做法
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=36597
利用一個 TStringList 記錄 RemoteAddress/RemoteHost/SocketHandle 其存放
的內容會像以下這個樣子 (格式可以自己定義,不見得三個都要全部記錄)
>>>>>=>>>    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
tomlee
一般會員


發表:5
回覆:14
積分:18
註冊:2003-10-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-05 01:33:32 IP:218.167.xxx.xxx 未訂閱
引言: 請問~當有人連線進來時 電腦會給此電腦一個handle值 而且每一個連線都會以陣列型式儲存起來 如:ServerSocket->Socket->Connection[] 我可以依照handle值由大到小將此陣列作一個簡單的排序嗎? 可以的話?要如何下手 不行的話?什麼原因? 謝謝~~~ < face="Verdana, Arial, Helvetica">
你是用 TServerSocket 吧?
它的 OnRead 的事件的參數就有一個 TCustomWinSocket*,你直接用這個指標就
可以對 Client 送資料了不是嗎?    把 SocketHandle 作排序的確是 Server 程式會常做的事。在C  通常是用 
std::map 或你要用 std::map ,或者視需
求改成你要的方式。    事實上還有 Order(1) 的搜尋法,就是根本不要排序,對每個 Client 產生一個
對映的結構,內部維護它的 SocketHandle 值這樣就好了。    
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-05 12:45:48 IP:211.21.xxx.xxx 未訂閱
如果您只要要分辨連線的話請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40060 排序??我個人是覺得離題太遠了 就算真需要排序 一個 server 能有多少連線進來? 數百萬條 connection 連進來嗎 ? 否則那幾條或幾十條 connect 做排序,不論排序目的為何 搜尋速度會快多少 ?
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-05 18:35:35 IP:218.162.xxx.xxx 未訂閱
bruce0211 你給我的網址我去看過了~~ 這樣的話~~宣告出來的vector也有維護上的問題 這正是我很苦惱的地方 至於離題遠的問題~~因為我也不知道我該怎麼定題目 至少我知道我要的是再連線的同時分析他的Handle值作排序 但RaynorPao大大說無法更動時,就已經得到我要的答案了~~ 也須說的沒錯~對於一個Server能有多少個人連上來, 比對上也許不用那麼複雜,但對於我的畢業專題,如果能將一些畢生所學發揮出來的話 我的意思是說~~至少我可以引用資料結構內教授的(二元搜尋),這樣畢業專題的論文上至少看的出來不是泛泛之輩所能寫的 小第我是基於此種心態希望精益求精,特別發表出來希望向各位前輩指教指教 寫寫各位大大了~ 我就把此榮譽給RaynorPao大哥了
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-05 20:29:07 IP:61.227.xxx.xxx 未訂閱
引言: ... 這樣的話~~宣告出來的vector也有維護上的問題 這正是我很苦惱的地方 ...
長官有把該篇看完嗎? 我不曉得您說的宣告出來的vector也有維護上的問題...是啥意思 我用的方法沒有另外宣告什麼 vector
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-11-05 21:49:08 IP:218.162.xxx.xxx 未訂閱
我有看完阿~~ Vector就是動態宣告 你給我的網址我去看了阿~~^^~ 他是用結構型的動態陣列儲存每筆連線進來的Client端資訊 但是在刪除的時候,不是一切的連線都是會正常的離線 所以我這邊曾經摸了一陣子~~因為畢竟我寫的專題是要賣的!! 系統不安全公司會罵的~ 至於你提出用>> > 發表人 -
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-11-05 22:09:44 IP:61.227.xxx.xxx 未訂閱
對厚 ~ 那怎麼辦勒 如何分辨同個 ip 連進來的不同的 connection 呢? 該篇原著用動態宣告出來的vector 能解決此問題嗎? 無解就是本題的答案嗎?
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-11-05 23:33:19 IP:218.162.xxx.xxx 未訂閱
無解是本題的答案~我想目前應該是這樣 至於你原本要我參考的~~是有達到那IP和HOST一樣時,是可以解決 因為原作者是比對的Socket這個東西~這裡面包含很多參數 其中Socket->Handle是最主要不會有相同的情況, 因為每一個Client連進來是都會由電腦給定一個Handle值 值得產生應該是亂數~無順序可言(這也是我最傷腦精的地方) 所以我會的就差不多這樣了~ 小弟學疏才淺 不知這樣的答案你滿意嗎?
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-11-06 09:50:24 IP:211.21.xxx.xxx 未訂閱
本問題已經有滿意的答覆了,答題得分者為:TIY~2  
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-11-06 10:11:36 IP:218.162.xxx.xxx 未訂閱
謝謝~ 這是討論區,大家討論討論 也謝謝你的賞識~
系統時間:2024-05-05 12:09:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!