2016-04-07 23 views
-3

[C#] Herkese selam, kendi yerel sunucumu oluşturma ve insanların dışarıda saklanan bir iade verilerini bağlamasına izin verme konusunda nasıl gidebileceğimi merak ediyorum. Bir "XNA" çözümü aramıyorum. İstemcinin çıplak kemiklerini sunucuya sindirmek istiyorum. İşte aradığım şey için bir özet aşağıda verilmiştir:Oyun için Yerel Sunucu C#

My PC [Sunucu] - bu diğer PC ile elde edilebilmesi için> Sürekli Güncellemeler/Oyuncu verilerini alır. Diğer istemcilerden veri depolar.

[ĐstemciPC] -,

+1

Asıl sorunun nedir? Yazıldığı gibi, bu çok geniş. Lütfen [** Buraya soru sorma **] (http://stackoverflow.com/questions/how-to-ask) hakkında bilgi edinin. –

+0

Yorum için teşekkür ederim, genel soru temelde bu sunucu yerel olarak nasıl başlangıç ​​yapabilirim böylece diğerleri benim PC'de kayıtlı yerel verilerimi kapmak olabilir –

+0

Bir örnek Minecraft sunucu olacaktır. Bu oyun sunucusu istemcisi, yerel olarak sunucunuzdaki tüm verileri iletmek ve depolamak suretiyle bir sunucuyu başlatmanıza izin verir. –

cevap

0

Bu herkes tıpkı ki küçük bir şey değildir, vb> sunucuya yazar (yeni oyuncu verileri/güncelleştirmeyi yapar) ve görseller güncellemek için daha fazla bilgi, diğer oyuncuları alır özellikle de programlamaya giriyorsanız. İlk olarak küçük başlarım, birkaç küçük uygulama yapın, .NET framework kütüphaneleri ile oynayın ve rahat olsun (özellikle System.Net/SSL şifrelemesi için System.Security gibi System.Net'e bakın). . Ağ iletişimi bileşeni, sürekli iletişimi yürütmek ve hızlı bir şekilde yanıt verebilmek için bir sistem uygulamanız gerektiğinden çok büyük olacaktır (herhangi bir gecikme, ağ bakış açısından düşürülmüş paketler olarak görülebilir ve istemci zaman aşımlarına neden olabilir). Ayrıca ne tür verilerin sunulduğunu (kaydedilmiş oyunlar, oyuncu verileri, kişisel bilgiler (parolalar, e-posta adresleri, vb.)) Ve bu verileri nasıl saklayacağınızı da düşünmek istersiniz. Bunun için birçok ücretli ve ücretsiz teknoloji var (Postgres, SQL, MySQL, vb.). Lütfen bahsettiğim bazı eşyalara hızlıca google yapın ve çok oyunculuğu desteklemek için oyunların ve arka uç sistemlerinin gelişmesinin yıllar sürdüğünü göreceksiniz.

Başkalarının kodunu parçalara ayırarak bir şeyler takıp öğrenmeyi öğrenen bir öğrencisiyseniz, aşağıdaki makalelerin bazılarına göz atabilirim.

http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm

http://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C

İşte bunun farklı System.Net ad sınıflarını ve işlevlerini diseksiyon bazı MSDN makaleleri bulunuyor. Ayrıca sunucu yalnızca bir seferde bir istek işlenirken olmadığından emin olmak için parçacığı kullanarak bakmak isteyeceksiniz

https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.security.cryptography(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.net.sockets(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.net(v=vs.110).aspx

. Buna birçok yaklaşım var ama iş parçacığı kullanmanın bazı temel örnekleri burada.

http://www.dotnetperls.com/thread

When to use Multithread? (bazı noktalar nasıl ve bizim çok kendi S/Ç sitesinde :) üzerinde konuları kullanmak için).

İşte size projenin bu tür koymak gerekecek çaba türünü göstermek için sizi ama daha sakındırıcı değil https://msdn.microsoft.com/en-us/library/system.threading.thread(v=vs.110).aspx

MSDN

gelen dişlerinde DL bu. Yapmak istediğiniz şey tamamen yapılabilir, ancak bazı beyin eğitimi ve kafa çizilmeye ihtiyaç duyacaktır.Sıkıcı geliyorsa, özür dilerim, sadece koçluk yapmaya çalışıyorum ve C# 'daki uzmanlık seviyenizden emin değilim! Size rağmen iyi şanslar arkadaş, umarım bu harika bir öğrenme deneyimine dönüşür!

+0

Ben çok tanıdık. Net, daha önce hiç böyle uygulamalar üzerinde hiç çalıştı. Bilgi için teşekkürler! –

+0

Bu kadar bağlantıyı veya neyi kullanmamam gerekiyorsa moderatörler için özür dilerim, görgü kuralımı düzeltmek için çekinmeyin, ama onun sorusu daha çok yönetim kurulu ve kuşatıcı olduğu için onu sadece genel bir yöne doğrultmaya çalışın. Umarım bu yardımcı olur. –

+0

@TylerEsposito Bir istemci/sunucu iletişim rolü için bunlardan birini şirket düzeyinde denemeliydim. Biraz istikrarlı ve iyi bir sistem almak haftalar sürdü. Zaman zaman çok sinir bozucu ve zorlayıcıdır ama öğrenmesi gereken harika bir şeydir (orada birçok kütüphane var ve bunu sizin için önceden yazılmış kodlar var ama bu size ağın bağırsaklarını gösterecek). İyi şanslar! –