[問題] 關於 Socket連線問題

看板java作者 (蔥頭)時間10年前 (2015/06/26 23:18), 10年前編輯推噓4(4016)
留言20則, 6人參與, 最新討論串1/1
請問一下各位大大 當Server 建立完成ServerSocket後 , 會產生一個socket來Listen 是否有Client 想要進行連線. 假設這時有Client進行連線, Server會配置一個新的socket物件, 根據書上所說, 此時server也會使用一個新的port(非Listen port)與Client進行連線, 也就是"說Listen port與連線後實際和Client互動的port 是不同的" ? 如果這樣, 能如果有100個Client進行連線, 那Server就必須使用100 port來進行服務, 加上Listen的Port為101個 ~ 我好奇的是, 假設Client的防火牆擋住了新產生了port, 那不是不能連線了嗎? 是我誤解了嗎 ? 請參考這張socket示意圖 : ppt.cc/8cra3 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.181.227 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1435331917.A.E55.html

06/26 23:31, , 1F
不是你理解錯就是書寫錯,Server Port不會變
06/26 23:31, 1F

06/26 23:33, , 2F
一個socket由src ip/port, dest ip/socket tcp/udp區分
06/26 23:33, 2F

06/26 23:33, , 3F
server port不需要變就可以分辨不同socket
06/26 23:33, 3F
※ 編輯: tas72732002 (114.34.181.227), 06/27/2015 00:40:13 ※ 編輯: tas72732002 (114.34.181.227), 06/27/2015 00:45:04

06/27 08:40, , 4F
clinet連出去的port不會變, 變的是server
06/27 08:40, 4F

06/27 09:11, , 5F
既然都用java了.. 就把socket toString()出來看吧
06/27 09:11, 5F
※ 編輯: tas72732002 (114.34.181.227), 06/27/2015 09:12:37

06/27 09:32, , 6F
server變了? 那client不用變嗎
06/27 09:32, 6F

06/27 09:36, , 7F
server接聽時的port不變, 產生連線後會分一個新的port
06/27 09:36, 7F

06/27 09:36, , 8F
與client連線.
06/27 09:36, 8F

06/27 09:40, , 9F
client還是維持在建立連線時的port不會變.
06/27 09:40, 9F

06/27 09:45, , 10F
http://tinyurl.com/pjt798t client或server都不會變
06/27 09:45, 10F

06/27 09:45, , 11F
socket是看(socket ip/port, client ip/port)來決定
06/27 09:45, 11F

06/27 09:46, , 12F
每個client都會對應到不同socket
06/27 09:46, 12F

06/27 11:01, , 13F
所謂的client就是主動連線吧,server就是收到後回覆,如
06/27 11:01, 13F

06/27 11:01, , 14F
果雙方找的門牌號碼(port)不同了,那server和client的定
06/27 11:01, 14F

06/27 11:01, , 15F
義就不一樣了吧...
06/27 11:01, 15F

06/27 13:47, , 16F
以系統角度來說, 產生的是一個新的 file descriptor
06/27 13:47, 16F

06/27 13:47, , 17F
沒有什麼新的port, 舊的port
06/27 13:47, 17F

06/27 13:48, , 18F
Java 只是用抽象的方式把他包裝起來, 稱為一個新的socket
06/27 13:48, 18F

06/27 13:48, , 19F
我認為可能是你的書翻譯有誤或是你的理解有誤
06/27 13:48, 19F

06/27 13:49, , 20F
server port 從頭到尾都不會變
06/27 13:49, 20F
文章代碼(AID): #1LZMrDvL (java)
文章代碼(AID): #1LZMrDvL (java)