Informatikai Barkács Fórum

PROGRAMOZÁS => Általános => A témát indította: Azzeroth Dátum 2014 március 29, 01:29:07 DÉLELŐTT

Cím: Server Client C#
Írta: Azzeroth Dátum 2014 március 29, 01:29:07 DÉLELŐTT
Üdv.

Nekem lenne egy olyan kérdésem, hogy valaki tudna egy tutorialt küldeni, vagy írni arra,
hogy hagyan is működik az, hogy feltételezzük én c#-ban megírtam egy programot ami mindegy nekem
milyen adatot küld a szervernek ( IP alapján ), csak még mindig nem értem pl. wow szerónal,
a szerver üzemeltetőnek kell a fix IP cim, de akkor a kliensnél miért nem?

Valaki c#-ban össze tudna nekem dobni egy oda vissza IP alapján müködös konzolos, vagy form-os projectet?
nagyon megköszönném :/ !!

Nagy Arnold
Cím: Re:Server Client C#
Írta: ktomi Dátum 2014 március 31, 01:05:43 DÉLELŐTT
Erre én is kíváncsi vagyok, hogy hogyan működhet ez a szerver-kliens kapcsolat. ::)
Cím: Re:Server Client C#
Írta: Zoltan Dátum 2014 március 31, 10:14:01 DÉLELŐTT
dinamikus IP nem azt jelenti hogy masodpercenkent, vagy  percenkent valtozik az IP cimed
Cím: Re:Server Client C#
Írta: AximCore Dátum 2014 március 31, 09:41:15 DÉLUTÁN
"Socket programming c#" a googlebe és találsz ezer meg egyet....  ;)
Cím: Re:Server Client C#
Írta: Azzeroth Dátum 2014 április 03, 07:04:27 DÉLELŐTT
Köszönöm a váalszokat, mert eljutottam odáig, hogy a kliens küldjön adatot a szervernek, és a szerver fogadja is pillanatkotok belül csak az oda vissza kapcsolatra nem jöttem még rá :( google-ben meg már jó pár oldalt végig néztem :/
Mondjuk akkor csak én vagy béna szerintem :/
Cím: Re:Server Client C#
Írta: kagebunshin Dátum 2014 április 03, 12:30:43 DÉLUTÁN
Üdv!

Ha tudsz küldeni adatot a szerver felé és ott fogadni, akkor gyakorlatilag ugyanúgy kell visszafelé is. Ha megosztod a kódot többe tudunk segíteni.
Addig is leírok egy egyszerű példát.

Szerver:
using System;
using System.Net;
using System.Net.Sockets;

namespace Szerver
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpListener listener = new TcpListener(IPAddress.Any, 8000);
            listener.Start();

            Socket s = listener.AcceptSocket();

            byte[] adat = new byte[2];
            s.Receive(adat);

            foreach (byte b in adat)
                Console.WriteLine(b);

            s.Send(adat);

            s.Close();
            listener.Stop();
        }
    }
}

Ez mindössze annyit csinál, hogy a 8000-es porton várakozik egy kliens csatlakozására. Ha ez megtörtént 2 byte adatot vár a klienstől, amit kiír és rögtön vissza is küldi a kliensnek, majd lezárja a kapcsolatot.

Kliens:
using System;
using System.IO;
using System.Net.Sockets;

namespace Kliens
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpClient client = new TcpClient();
            client.Connect("127.0.0.1", 8000);

            Stream stm = client.GetStream();

            byte[] adat = new byte[] { 15, 23 };
            stm.Write(adat, 0, 2);

            byte[] fogadott = new byte[2];
            stm.Read(fogadott, 0, 2);

            foreach (byte b in adat)
                Console.WriteLine(b);

            stm.Close();
            client.Close();
        }
    }
}

Localhostra csatlakozik a 8000-es porton. Küld 2 byte-ot a szervernek (15-öt és a 23-at). Visszaolvassa, kiírja és zárja a kapcsolatot.
Cím: Re:Server Client C#
Írta: Azzeroth Dátum 2014 december 06, 06:26:00 DÉLUTÁN
Köszönöm, kicsit késve, de elolvastam :)
Ez tökéletes már szinte :D

Még 1 dologban, ha van kedve valakinek segítséget kérnék:

Tudna nekem egy olyan server kliens kapcsolatot, írni linkelni, ami ezt tartalmazná:

Feltételezzük egy kezdetleges wow szerver - kliens kapcsolat

A Kliens küld egy "packet"-et ami tartalmaz egy felhasználónevet, jelszót, számot
A szerver várakozik majd lekérdezi, hogy hanyas számű packet jön(pl: 0x00A0), fogadja, majd egy switch-case által deríti ki, hogy mit akar.És aztán mondjuk ha felhnév megegyezik Azzeroth-tal akkor visszaküldi neki ,hogy 1, ha nem egyezik, akkor 0.

Nagyon szépen megköszönném :/


Cím: Re:Server Client C#
Írta: EroniX Dátum 2014 december 21, 08:48:10 DÉLELŐTT
Ezt az oldalt nyálazd át: http://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx
Ez alapján megkell tudnod oldani.