Server Client C#

Indította Azzeroth, 2014 március 29, 01:29:07 DÉLELŐTT

Előző téma - Következő téma

Azzeroth

Ü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

ktomi

Erre én is kíváncsi vagyok, hogy hogyan működhet ez a szerver-kliens kapcsolat. ::)

Zoltan

dinamikus IP nem azt jelenti hogy masodpercenkent, vagy  percenkent valtozik az IP cimed

AximCore

"Socket programming c#" a googlebe és találsz ezer meg egyet....  ;)
"Tanítani lehet az ostobát, de gondolkodásra bírni nem."
A Talmud

Windows Firewall
http://devopsreactions.tumblr.com/

Why use Windows, if you have open doors... to Linux

Azzeroth

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 :/

kagebunshin

Ü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.
"-Egy dolgot viszont elárulhatnál nekem. Ki találta ki, hogy a fák őreinek erejével szálljatok szembe velem, mert nem te ugye? Te nem tudtad!
-Nem... de azért vagyunk többen, hogy valaki tudja."

Azzeroth

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 :/



EroniX

Azuregos Delta Force

Powered by EzPortal