2011-08-02 78 views
2

我一直在尋找幾個小時,只需要一些關於我的情況的指導。我想創建一個簡單的客戶端/服務器程序。我原本計劃在java中使用它們,但幾周前我從godaddy購買了一個共享主機帳戶,並且他們禁用了新的帳戶的Java。所以,我猜想我的下一個最佳選擇是用我熟悉的語言,PHP。我一直在關注來自java網站的套接字tutorial,並且製作了java客戶端。我一直在試圖將示例的服務器部分轉換爲PHP。顯然,godaddy會讓你使用fsockopen()作爲共享服務器上的套接字。我想我需要知道的是,這是可能的,我如何在運行php文件後運行?該示例說我需要在運行客戶端之前啓動服務器程序。我不確定如何做到這一點。Java客戶端和帶有套接字的PHP服務器

回答

2

我不會使用原始套接字來做到這一點。相反,使用HTTP上的JSON是因爲PHP支持處理HTTP而沒有任何特別的考慮。在GoDaddy或Amazon EC2上的託管apache實例上運行PHP頁面很簡單。當然你可以使用套接字,但實際上很少有人這樣做。大量更多的人使用PHP處理和響應HTTP。這意味着如果你在這裏追蹤牛羣,你會發現更多的人可以幫助回答你的問題。還有兩邊的API庫可以輕鬆完成此操作。使用套接字提供了許多必須自己完成的事情,或者承受所有第一次使用原始套接字所帶來的奇怪錯誤。

同時JSON處理很容易被Java和PHP支持,因此使用它很容易將數據發送到客戶端和服務器。

那麼你肯定可以在前端使用PHP,如果你願意,也可以在前端使用Java,但是我建議取消你的Go-Daddy賬戶,並且獲得一個Amazon EC2/S3賬戶,因爲你得到一臺完整的機器專用於任何你想穿上它。所以如果你想在後端執行Java,你可以通過在Amazon的實例上安裝JDK,Tomcat等來完成任務。您也可以在那裏託管PHP。甚至還有大量預裝Java或PHP堆棧的AMI實例。

+0

謝謝,我會檢查到。我最終想創建一個非常小的4人在線遊戲。我一直在閱讀並得到這樣的印象,即套接字是這樣的事情的途徑。我之前在Java和PHP之間使用過一些Android應用程序的JSON,並且工作正常。如果我需要不斷更新球員的動作或行動,我不認爲這是非常實際的。 – Mark

+0

好的。對於我的建議,遊戲是一個特殊的例外,但只有在遊戲將實時或連續的情況下。如果輪到的話我的建議仍然有效。但是,現在你說你正在做一個遊戲Amazon EC2可能會爲你提供更好的服務。 – chubbsondubs

+0

我感謝您的幫助。我很高興現在正朝着正確的方向前進。我剛剛註冊了EC2,並會試用它。 – Mark

3

雖然我不能100%確定這一點,但我會繼續說,它可能無法正常工作。對於一個託管公司來說,套接字可能更加昂貴,所以他們很可能會成爲第一個被削減的東西。當你需要一些充當套接字服務器的東西時,你通常需要一個長時間運行的進程來訪問運行連接的機器上的某些端口。由於大多數託管公司爲其每個客戶端創建了一個chroot ed環境,客戶端將被拒絕安全訪問,他們需要能夠運行真正的套接字服務器。

我與GoDaddy作爲託管公司的經驗是,他們似乎沿着這一思路進行操作。據我所知,GoDaddy將允許PHP將讀爲套接字,並充當套接字客戶端。這與他們的fsockopen的津貼一致。我真誠地懷疑這是你需要的。

除非您確實需要讓服務器將信息推送到客戶端(而不是讓客戶端請求來自服務器的數據),否則使用標準HTTP請求並使用XML或JSON會更好通過網絡(XML和JSON都支持在PHP中相當熟練)。如果你真的有一個socketserver,那麼我會去webmasters.stackexchange.com,看看你是否能找到類似於this one的建議。

如果您確實想要創建一個PHP Socket服務器,Zend的人員中有一個tutorial。他們非常尖銳,所以希望這將足以幫助你轉換腳本(如果這是你決定去的方式)

+0

謝謝。我實際上只是嘗試了PHP套接字服務器教程。 – Mark

相關問題