2015-07-22 35 views
1

我剛剛閱讀了php.net上的socket_bind文檔。我不清楚爲什麼你應該指定地址來將套接字綁定到服務器端。這不應該總是你用來返回php文件本身的服務器地址嗎?如果您指定的地址不是您的服務器,會發生什麼情況?什麼是在PHP中綁定的套接字?

它還指出,如果地址不是你的機器,windows可能會拋出一個錯誤。爲什麼不是默認的服務器地址?

在java中,您只需指定端口號來將套接字綁定到服務器端。爲什麼PHP不同?

回答

1

雖然我不能告訴你Java是怎麼回事,但我可以告訴你它是如何在PHP和大多數其他平臺上工作的。

由於您的機器可能有多個地址,因此您需要指定地址。每個都可以被綁定到特定的端口,並且您可以在同一個端口上有多個打開的套接字,但是不同的ips。 0.0.0.0 IP意味着「一切」,並且127.0.0.1導致您的服務器只能在本地機器上訪問。

編輯:看起來像甚至java也有辦法指定一個特定的IP綁定到。 http://download.java.net/jdk7/archive/b123/docs/api/java/net/ServerSocket.html#ServerSocket%28int,%20int,%20java.net.InetAddress%29

+0

所以真的提供的地址是套接字的轉發地址?這是否意味着地址是服務器或客戶端的轉發地址? – fritz

+0

這裏沒有轉發,所以我想我不明白你的問題。 – Evert

+0

我想我想知道這是什麼意思將套接字綁定到IP?那是服務器還是客戶端的IP? – fritz