Ü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
Erre én is kíváncsi vagyok, hogy hogyan működhet ez a szerver-kliens kapcsolat. ::)
dinamikus IP nem azt jelenti hogy masodpercenkent, vagy percenkent valtozik az IP cimed
"Socket programming c#" a googlebe és találsz ezer meg egyet.... ;)
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 :/
Ü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.
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 :/
Ezt az oldalt nyálazd át: http://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.110).aspx
Ez alapján megkell tudnod oldani.