Programming 板


LINE

※ [本文轉錄自 C_and_CPP 看板] 作者: james732 (好人超) 看板: C_and_CPP 標題: [問題] 關於socket程式與TCP觀念 時間: Fri Apr 9 04:53:29 2010 目前想要做一個測試: 當一個主機使用 listen, accept 等函式做為 TCP server 時 它同一個時間最多能建立幾個 TCP 連線呢?這個限制又是因為什麼? 對於不同的作業系統(ubuntu Linux, Windows)是否會有不同的表現? server 端程式碼:http://nopaste.csie.org/65edc 用無窮迴圈不斷的接受連線,什麼事都不做,停留在 ESTABLISHED 狀態 client 端程式碼:http://nopaste.csie.org/c0da0 用無窮迴圈不斷的 connect,同樣的什麼都不做,停留在 ESTABLISHED 狀態 目前發現有兩個因素會限制連線的上限 ulimit -n : 單一 process 能使用的 File descriptor 上限 sysctl -w net.ipv4.ip_local_port_range="1024 65000" : 能用的 local port 範圍 不過對於目前測試的結果,有些狀況不太明白 1. 使用 netstat -n 觀察,server 端的 port 一律是使用 53764 http://james545.myweb.hinet.net/1.jpg
其實我不太懂為什麼都是同一個 port 呢?這麼多的 client 可以用同一個? 2. 我是這麼執行程式的: server 端:./server 1234 ( server 監聽 TCP Port 1234 ) client 端:./client 1234 ( server 的 IP 寫死在程式裡, 連至 Port 1234 ) 不過 client 大約建立六萬的連線後,就會發生錯誤訊息 connect: Cannot assign requested address 判斷是 client 自己的 local port 用盡了,即使再開啟另一個 process 也相同 這個時候就必須要再用另外一部電腦來測試了 有沒有辦法解決這個問題呢? 3. 要像這樣測試 TCP 連線的上限,還有沒有其他的辦法呢? (譬如說現成的工具套件?) 4. 其實我一直不太能把 socket API 與 TCP/IP 的觀念很好的連結在一起 譬如說,我不懂 accept 與 connect 這兩個函式是怎麼搭配的 關於這個,有沒有比較好的參考資料呢? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46 ※ 編輯: james732 來自: 140.117.171.46 (04/09 04:58)
1F:→ chingggg:4. 如果是 accept 與 connect 這兩個函式的搭配, 建議你 04/09 05:39
2F:→ chingggg:看 UNIX Network Programming, Volume 1 04/09 05:39
3F:→ chingggg:如果是 socket API 與 TCP/IP 的觀念搭配, 建議你看 04/09 05:40
4F:→ chingggg:TCP/IP Illustrated, Volume 2: The Implementation 04/09 05:40
5F:→ james732:vol1 有唸過了 vol2 買了好久都還沒有看 orz 04/09 05:41
6F:→ chingggg:2, 3 請參照 TCP UDP 的 header format 04/09 05:46
9F:→ chingggg:因為在 TCP/IP 裡面, port 就是用 16-bit 來表示, 2^16 = 04/09 05:47
10F:→ chingggg:65536, 我想這就是你問題的解答 04/09 05:48
11F:→ james732:我知道2的原因是受限於port數量 只是不知道能不能更多XD 04/09 09:39
--



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
12F:→ rofellosx:上限看記憶體空間多少吧.. 114.32.64.90 04/09 10:54
13F:→ try123h:每個tcp client 都要有一個local port 218.160.41.89 04/10 01:15
14F:→ try123h:所以理論上,本機端tcp client可以到65535 218.160.41.89 04/10 01:16
15F:→ try123h:而tcp server本來就是1個port,很多client 218.160.41.89 04/10 01:17
16F:→ try123h:連進來,不會占用到server端的其它port 218.160.41.89 04/10 01:17
17F:→ try123h:所以在server端, 理論上client是無限 218.160.41.89 04/10 01:18
18F:→ try123h:當然會受限於OS的"設定",以及程式的寫法 218.160.41.89 04/10 01:19
19F:→ try123h:bbs, bbs server的port是21, 我們是client 218.160.41.89 04/10 01:20
20F:→ try123h:所以你看ptt 一次都超過10萬人, 但 ptt 218.160.41.89 04/10 01:21
21F:→ try123h:server只會占用到1個port (21) 218.160.41.89 04/10 01:21
22F:→ try123h:有錯再請網友指正:) 218.160.41.89 04/10 01:22
23F:→ operationcow:他不是已經只 listen 1234 ? 140.112.243.43 04/10 03:43







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP