我創建一個服務器套接字查找服務器套接字的端口號
% set serverSocket [socket -server accept 0]
sock005DBCC0
由於我使用的端口號爲零,操作系統將分配一個空閒端口的服務器套接字。
從man頁面,我知道我們必須使用-sockname
和chan configure
來獲取端口號。
-sockname
對於客戶端套接字(包括當 客戶端連接到服務器套接字獲得創建頻道)這個選項返回 三個元素,地址,主機名和列表 插座的端口號。如果無法計算主機名稱,則第二個元素是 與地址(該列表的第一個元素)相同。
% chan configure $serverSocket -sockname
0.0.0.0 0.0.0.0 65495 :: :: 65495
正如你可以看到上面的命令返回的六大要素。 ::
在這裏有什麼意義?它是指全球範圍?
我的實際意圖是獲取套接字正在偵聽的端口號。
所以,爲了獲得端口號,我可以單獨檢索列表的最後一個元素,如下所示?
% set serverPort [lindex [chan configure $serverSocket -sockname] end]
65495
%
我問這個問題的原因是因爲該列表中重複了該端口號。
@ Donal研究員:謝謝Donal幫助你。 – Dinesh 2015-03-25 11:38:32