2017-03-17 79 views
1

我一直在C++中尋找一個簡單的網絡TCP連接的StackOverflow,我似乎發現所有的東西都是Java,Python和C#。我知道Python或Java可以建立簡單的連接,但大多數情況下我是用C++編寫一個簡單的Yahtzee遊戲,並且想要了解C++中的Networking,因爲我有大約一年的C++知識,但對這些知識沒有很好的理解其他語言,但唉,我無法找到一個很好的簡單的設置,以滿足我的需求。通過TCP的C++ Yahtzee

我看到C++ Winsock P2P誰有一個設置,但它有幾個難點,初學者。

在我的遊戲中,我希望客戶端能夠完成大部分工作(因爲我聽說這是一個更好的實現),但我不確定服務器在哪裏獲取輸入並返回輸出。我讓客戶滾動並顯示滾動。然後,我認爲它會完成所有三個滾動,並且一旦您選擇了使用滾動的位置,客戶端會向服務器發送記分表中的位置和擲骰子。

我理解的協議:你送東西和服務器能夠計算和發送回來,但我的問題是,我有我的客戶端發送一個編號(INT選擇= 12 的Yahtzee的明顯)作爲然後發送一個擲骰子數組(骰子[5])給服務器以計算進入的內容?或者客戶是否應該這樣做?這是我不知道發送和整體設置。

+0

如果你正在設計應用程序和協議,你決定什麼是最好的方法。 – Barmar

+1

如果你正在實現一個多人遊戲,你通常需要服務器來完成大部分工作。如果你在客戶端進行,用戶可以生成總是給他Yahtzee的假擲骰子。 – Barmar

回答

0

這個問題很難回答,因爲它只是您的決定如何去做,而且這兩種方法都有效。在服務器客戶端系統中需要考慮的一些常規問題:

  • 客戶端做的事情對黑客來說更難以忍受。 (例如,如果您在客戶端上生成隨機死亡結果,則可以更改代碼並向服務器發送錯誤數據,例如始終爲12或其他值)
  • 您在服務器上執行的操作會影響用戶數量增長非常大時的性能。讓客戶不離開你的服務器的處理能力用於其他的東西
  • Oviously限制的信息,你發送的時候可能

    所以一般的經驗法則是金額:讓服務器做任何事情,這是「危險的」,讓客戶做其他事情。 (雖然不幸的是很多事情在這方面是危險的)

在你的情況,我會讓服務器做骰子滾動並將結果發送給用戶。

是否必須我的客戶端發送的數(INT選擇= 12爲一個的Yahtzee明顯),爲分組消息,然後發送擲骰的陣列(INT輥[5]),用於在服務器計算所發生在?或者客戶是否應該這樣做?

你不能發送一個空的數組,並讓服務器填寫它。記住,這些可以是單獨的計算機。他們不能訪問彼此的內存。你可以發送一個請求到服務器(也許是一個int常量),以便它知道該怎麼做(例如擲骰子) ,然後在網絡上監聽數據並解釋例如數據。服務器發送給您的下一個5字節作爲其滾動的骰子。