我建立一個小multipliplayer這將需要以下內容:Datasnap適合多達8個非通訊密集型雙向多人遊戲嗎?
- 必須在Delphi編寫
- 必須支持互聯網連接(不僅LAN)通過HTTP
- 支持一些加密
- 工作(可能是定製的)
- 能夠發送命令到服務器
- 能夠接收來自服務器的響應
- 能夠連接多達8個玩家在一臺服務器
- 能夠將複雜的對象(也許JSON序列)傳遞給服務器
你認爲新的Delphi 2010的DataSnap可以成功地在此使用場景還是應該與普通的舊TSocket一起去?
我建立一個小multipliplayer這將需要以下內容:Datasnap適合多達8個非通訊密集型雙向多人遊戲嗎?
你認爲新的Delphi 2010的DataSnap可以成功地在此使用場景還是應該與普通的舊TSocket一起去?
的DataSnap可以做到這一點你上面列出的所有:
所以要回答你的問題,是的,我認爲新的Delphi 2010 DataSnap可以用在你的場景中。
正如Nick所說,答案是肯定的。
鮑勃斯沃特寫了一份白皮書,並在更新的DataSnap in Delphi 2010上製作了一些視頻,可以幫助您入門。
如果您的多人遊戲不發送太多數據HTTP和Datasnap可能工作。如果您需要快速溝通,我會使用UDP和自定義二進制協議。除非必須繞過公司防火牆,該公司防火牆幾乎可以阻止任何協議,而是阻止HTTP - 而且公司通常不喜歡在工作時間內玩的人 - 防火牆會阻止傳入連接,而不是傳出。只需要服務器需要打開端口以允許客戶端連接。 而且我會避免使用JSON - 如果您不需要互操作性,則二進制序列化要快得多。
您的意思是即使在企業網絡中使用端口80,防火牆也可以阻止通信(正在傳入)? – 2009-12-04 22:28:26
正確的託管防火牆不允許傳入連接到端口80,但允許允許的Web服務器(通常在DMZ或類似服務器中)。客戶端可以將HTTP請求發送到端口80上的外部Web服務器,並接收答案,但nwtwork內的服務器無法接收請求,除非防火牆允許。 – 2009-12-06 18:25:06
你是對的,AFAIK UDP不能在本地網絡外部路由(除非你做一些複雜的NAT),而HTTP/TCP是。從性能的角度來看,我絕不會使用DataSnap - 但在這裏,需求高達8個客戶端,所以在這種情況下,DataSnap將無縫處理它。 – 2014-06-28 14:02:52
請注意,上面的「非常好的過濾器」根本就不安全 - 因爲您需要一種安全的方式來交換會話密鑰。 – 2009-12-06 18:27:54