實體與虛擬IP之間的連線 |
尚未結案
|
remmurds
一般會員 發表:17 回覆:14 積分:16 註冊:2006-10-29 發送簡訊給我 |
我利用TClientSocket與TServerSocket寫了一個簡單的聊天室做為測試
連線型態均為non-blocking 其中Server端電腦用的是實體IP Client端則是使用DHCP發放的虛擬IP 不知道是甚麼原因 似乎這種連線下容易造成連線不穩或Client端收不到Server端訊息的情況 後來我將Server改到DHCP底下 就沒有這個問題了 請問各位有沒有遇到過類似的情況呢?
------
隨筆網誌: http://reassert.blogspot.com 編輯記錄
remmurds 重新編輯於 2008-01-08 13:19:22, 註解 無‧
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
IP 就是 IP
實際與自用 IP 都一樣 你的網路環境如何設定才是重點 既是不同網段,那 routing 就很重要,不然一定會掉包 ===================引 用 remmurds 文 章=================== 我利用TClientSocket與TServerSocket寫了一個簡單的聊天室做為測試 連線型態均為non-blocking 其中Server端電腦用的是實體IP Client端則是使用DHCP發放的虛擬IP 不知道是甚麼原因 似乎這種連線下容易造成連線不穩或Client端收不到Server端訊息的情況 後來我將Server改到DHCP底下 就沒有這個問題了 請問各位有沒有遇到過類似的情況呢? |
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
因為你用的是TClientSocket與TServerSocket,這兩個物件是屬於 TCP 傳輸
而TCP傳輸跟DHL一樣『使命必達』,所以基本上只要連線正常,且TClientSocket與TServerSocket傳送及接收的過程,沒有發生任何例外狀況,資料就一定會送達(此為TCP這個通訊協定的特性) 比較有可能的是,你的程式有點邏輯上的錯誤 我個人用TClientSocket與TServerSocket寫的程式,不管事實體IP、虛擬IP甚至穿越 Internet / Intarnet 跨越防火牆等等,都可以正常運作 ===================引 用 remmurds 文 章=================== 我利用TClientSocket與TServerSocket寫了一個簡單的聊天室做為測試 連線型態均為non-blocking 其中Server端電腦用的是實體IP Client端則是使用DHCP發放的虛擬IP 不知道是甚麼原因 似乎這種連線下容易造成連線不穩或Client端收不到Server端訊息的情況 後來我將Server改到DHCP底下 就沒有這個問題了 請問各位有沒有遇到過類似的情況呢? |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
>針對這句"...不管事實體IP、虛擬IP...都可以正常運作"
不對! 虛擬IP 可通實體IP ,但實體IP 不能通虛擬IP。所以 Server 不能主動向 Client 通訊。 就我的理解是這樣。 所以造成 很多軟體為了要解決這個問題,只能 Client 定期向 Server 聯繫。 如果我不對,請指正。 ===================引 用 lu 文 章=================== 因為你用的是TClientSocket與TServerSocket,這兩個物件是屬於 TCP 傳輸 而TCP傳輸跟DHL一樣『使命必達』,所以基本上只要連線正常,且TClientSocket與TServerSocket傳送及接收的過程,沒有發生任何例外狀況,資料就一定會送達(此為TCP這個通訊協定的特性) 比較有可能的是,你的程式有點邏輯上的錯誤 我個人用TClientSocket與TServerSocket寫的程式,不管事實體IP、虛擬IP甚至穿越 Internet / Intarnet 跨越防火牆等等,都可以正常運作 ===================引 用 remmurds 文 章=================== 我利用TClientSocket與TServerSocket寫了一個簡單的聊天室做為測試 連線型態均為non-blocking 其中Server端電腦用的是實體IP Client端則是使用DHCP發放的虛擬IP 不知道是甚麼原因 似乎這種連線下容易造成連線不穩或Client端收不到Server端訊息的情況 後來我將Server改到DHCP底下 就沒有這個問題了 請問各位有沒有遇到過類似的情況呢? |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
你先把什麼叫 Client 什麼叫 Server 搞清楚。
Client 是提出"需求"者。 Server 是回應"需求"者。 那 Server 就沒有必要"主動"向Client 通訊了。 再者。何謂"主動"通訊? 在這些元件來看就是 connect 這個函數。 你看看 Server 有 connect 這個函數嗎? server 有的只有 accept 函數。 至於,你的問題,在於 client 跟 server connect 完成之後 所建立的這個通訊管道。 server 就可以用來回應了。 這也就是你所說的"主動"向 client 通訊了。 你可以參考 http://delphi.ktop.com.tw/board.php?cid=30&fid=67&tid=88689 PS.DHCP 所取得的 IP 不見得是你口中的虛擬 IP. 這個觀念有錯。 ===================引 用 RootKit 文 章=================== >針對這句"...不管事實體IP、虛擬IP...都可以正常運作" 不對! 虛擬IP 可通實體IP ,但實體IP 不能通虛擬IP。所以 Server 不能主動向 Client 通訊。 就我的理解是這樣。 所以造成 很多軟體為了要解決這個問題,只能 Client 定期向 Server 聯繫。 如果我不對,請指正。
編輯記錄
暗黑破壞神 重新編輯於 2008-01-13 09:08:47, 註解 無‧
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
IP 就是 IP
如果你要堅決的認為「虛擬IP 可通實體IP ,但實體IP 不能通虛擬IP」 你自己去看 IP 相關書籍吧,因為這不是三言兩語可以跟你說的清楚的 ===================引 用 RootKit 文 章=================== >針對這句"...不管事實體IP、虛擬IP...都可以正常運作" 不對! 虛擬IP 可通實體IP ,但實體IP 不能通虛擬IP。所以 Server 不能主動向 Client 通訊。 就我的理解是這樣。 所以造成 很多軟體為了要解決這個問題,只能 Client 定期向 Server 聯繫。 如果我不對,請指正。 ===================引 用 lu 文 章=================== 因為你用的是TClientSocket與TServerSocket,這兩個物件是屬於 TCP 傳輸 而TCP傳輸跟DHL一樣『使命必達』,所以基本上只要連線正常,且TClientSocket與TServerSocket傳送及接收的過程,沒有發生任何例外狀況,資料就一定會送達(此為TCP這個通訊協定的特性) 比較有可能的是,你的程式有點邏輯上的錯誤 我個人用TClientSocket與TServerSocket寫的程式,不管事實體IP、虛擬IP甚至穿越 Internet / Intarnet 跨越防火牆等等,都可以正常運作 ===================引 用 remmurds 文 章=================== 我利用TClientSocket與TServerSocket寫了一個簡單的聊天室做為測試 連線型態均為non-blocking 其中Server端電腦用的是實體IP Client端則是使用DHCP發放的虛擬IP 不知道是甚麼原因 似乎這種連線下容易造成連線不穩或Client端收不到Server端訊息的情況 後來我將Server改到DHCP底下 就沒有這個問題了 請問各位有沒有遇到過類似的情況呢? |
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
不曉得你所謂的Server 不能主動向 Client 通訊,指的是什麼?是SERVER不能主動Connect至CLIENT嗎?還是SERVER不能主動送資料給CLIENT?
若是SERVER不能主動Connect至CLIENT,那你說對了,不過這跟實體IP或虛擬IP無關,甚至SERVER和CLIENT是處於同一個網段,一樣都做不到,只有CLIENT可以主動Connect至SERVER建立連線。 若是第2個SERVER不能主動送資料給CLIENT,那你觀念有點錯誤,一旦連線建立後,溝通就是雙向滴,無所謂的主動或被動 舉個例子,你有玩MSN吧?MSN就是用CLIENT Socket寫成滴(當然不止這麼簡單啦,不過主要還是用 Client Socket),MSN的主機是 Server Socket,你想想MSN的主機,有沒有主動送資料給你?當你的朋友上線時,MSN會主動通知你某某某上線了,甚至有朋友發話給你時,MSN主機會主動通知你 記住一句話,溝通是雙向滴,任何一方都可以主動發話.....唯一的限制是,雙方的溝通機制是否允許而已(例如:MSN允許SERVER主動送訊息給CLIENT) ===================引 用 RootKit 文 章=================== >針對這句"...不管事實體IP、虛擬IP...都可以正常運作" 不對! 虛擬IP 可通實體IP ,但實體IP 不能通虛擬IP。所以 Server 不能主動向 Client 通訊。 就我的理解是這樣。 所以造成 很多軟體為了要解決這個問題,只能 Client 定期向 Server 聯繫。 如果我不對,請指正。 |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
當虛擬IP這一方為Listen 狀態下,實體IP有無機會向虛擬IP主動聯繫,而非由虛擬IP請求後回復。
這句話的意思應該是,虛擬IP是Server Socket 而實體IP是 Client Socket ,實體IP的Client Socket 是否可以 Connect 至虛擬IP的 Server Socket 建立連線,是吧?我應該沒有誤解吧? 這個問題,在一般的情況之下,答案是~~不行 但是若你會設定 Router 或是提供NAT的設備(最常見的就是市面在賣的 『動態IP分享器』) 這個問題的答案是~~可以,至於怎麼設定,則是離題了 呵呵~~好玩吧~~這就是TCP/IP的特性,有太多可能性了,別忘了TCP/IP當初是設計出來要應付核彈攻擊後,還要能通訊滴 ===================引 用 RootKit 文 章=================== 好吧!我在試圖說明清楚。因為我也想搞清楚,實體IP可否主動向虛擬IP連線。 暗黑兄 不需針對Client 與Server 有何不同下去做討論。因為我只是答覆上面的問題簡寫。 至於跟DHCP 也無關。 一個很明顯例子。 當虛擬IP這一方為Listen 狀態下。實體IP有無機會向虛擬IP主動聯繫。而非由虛擬IP請求後回復。 至於 MSN 方法,因該是利用Client請求的方式。 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
恩,這樣說也行,但是在網路,我是認為並沒有所謂的一般情形
若是指接上線沒作設定,那也不是一般情形,只是自動設定代勞,只要是網路,就必須設定,不管是人工或是自動 因為,一定會有 route,只是正不正確而已,至於說私有 IP 不可在網路上使用,乃是因為,「出了你家,沒有人幫你 route」 如果你連線的路徑上,一路都有人幫你 route ,私有 IP 還是可以使用 但是因為私有 IP,被我們設定為私有,表示會有一堆人用(會重複,公用則不會,公用有唯一性),那到底 route 到誰家?這樣設定起來會超複雜吧!所以既然為私有,就沒必要在網際網路上使用,不然只是搬石頭雜自己腳 但是 但是若是在一個封閉區域內使用,只要 IP 不重複(如果你要重複也行,用NAT相關方式處理,也是會通,但也是自找麻煩就是了),你愛怎麼設定,就怎麼設定 Ping 得到,就是有通,沒有規定誰主動誰被動,主動、被動,是網路程式設計上的規劃設定 如果硬體有接好,ping 不通,就先看 route 是否正確,沒有正確的設定,就算同一 HuB 下,也會裝作沒聽到,你自己可以弄個簡單的環境驗證,要證實有收到但不處理,就必須截聽封包 再看使否有 NAT 需求,最後才思考其他因素 ping 通了,程式不通,那是你程式設計上的問題 不穩就是不穩,收不到就是收不到 你不先確定硬體正常,如何決定是軟體的錯? 還是照步來,一個一個排除才為上策 問題要依據範圍特性,一步一步排除,不是你想、你認為之類的亂猜 TCP/IP 又不是一天兩天的技術,排解問題早就有方式可以依循,不要猜啦,太浪費時間 ===================引 用 lu 文 章=================== 當虛擬IP這一方為Listen 狀態下,實體IP有無機會向虛擬IP主動聯繫,而非由虛擬IP請求後回復。 這句話的意思應該是,虛擬IP是Server Socket 而實體IP是 Client Socket ,實體IP的Client Socket 是否可以 Connect 至虛擬IP的 Server Socket 建立連線,是吧?我應該沒有誤解吧? 這個問題,在一般的情況之下,答案是~~不行 但是若你會設定 Router 或是提供NAT的設備(最常見的就是市面在賣的 『動態IP分享器』) 這個問題的答案是~~可以,至於怎麼設定,則是離題了 呵呵~~好玩吧~~這就是TCP/IP的特性,有太多可能性了,別忘了TCP/IP當初是設計出來要應付核彈攻擊後,還要能通訊滴 我倒是很好奇,核彈攻擊後,網路真的可以用嗎? 依據現今的核武規模,核彈攻擊後(應該不只一顆吧,大家射來射去的): 1. 網路線路或是交換機房,可以防核彈嗎? 2. 那電哪裡來?沒電,網路可以用嗎? 3. 如果人死光了,那誰來用網路?外星人嗎? 如果以上都不行,那發展心電感應還可能比較快喔!我思,固有通,呵呵 我想還是不要有戰爭好,現在生活不錯啊?誰想到退 100 年,過走路、挑水、困苦生活?只因我們把所有物資拿來戰爭? 啊,上網打打「網路遊戲戰爭」就好了啦! ===================引 用 RootKit 文 章=================== 好吧!我在試圖說明清楚。因為我也想搞清楚,實體IP可否主動向虛擬IP連線。 暗黑兄 不需針對Client 與Server 有何不同下去做討論。因為我只是答覆上面的問題簡寫。 至於跟DHCP 也無關。 一個很明顯例子。 當虛擬IP這一方為Listen 狀態下。實體IP有無機會向虛擬IP主動聯繫。而非由虛擬IP請求後回復。 至於 MSN 方法,因該是利用Client請求的方式。
編輯記錄
syntax 重新編輯於 2008-01-14 14:52:43, 註解 無‧
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |