Üdvözletem!
Eddig nem igazán volt dolgom szerver-kliens megoldásokkal, viszont most szükségem lenne rá.
Egy Listát szeretnék átküldeni a szerverről a kliensre, viszont nem akar összejönni...
A szerver adatbázisból kiolvas adatokat és azokat lementi egy listába (List<GameobjectSpawn>). Ezt átküldené a kliensnek, az pedig dolgozna az adatokkal...
Találtam egy pár kódot a neten, azokból szemezgettem, de így hajnalra belefáradtam, szóval szeretnék egy kis segítséget kérni. :)
Előre is köszönöm.
Az egyik talált kód amivel próbálkoztam:
string ip = "127.0.0.1";
int tcp_port = 25001;
List<GameobjectSpawn> GoSpawn = new List<GameobjectSpawn>(); //szerver: adatbázisból kimenti az adatokat
struct GameobjectSpawn
{ ... };
//kliens oldal:
TcpClient client = new TcpClient();
client.Connect(IPAddress.Parse(ip), tcp_port);
NetworkStream stream = client.GetStream();
string s = "GetGameobjectSpawn";
byte[] message = Encoding.ASCII.GetBytes(s);
stream.Write(message, 0, message.Length);
stream.ReadTimeout = 10000;
if (stream.CanRead)
{
byte[] readBuffer = new byte[client.ReceiveBufferSize];
using (MemoryStream writer = new MemoryStream(1024 * 4))
{
while (stream.DataAvailable)
{
int numberOfBytesRead = stream.Read(readBuffer, 0, readBuffer.Length);
if (numberOfBytesRead <= 0)
break;
writer.Write(readBuffer, 0, numberOfBytesRead);
writer.Position = 0;
BinaryFormatter bf = new BinaryFormatter();
GoSpawn = (List<GameobjectSpawn>)bf.Deserialize(writer);
writer.Close();
}
}
}
stream.Close();
client.Close();
//szerver oldal
TcpClient mClient = (TcpClient)client;
NetworkStream stream = mClient.GetStream();
Byte[] bytes = new Byte[256];
string data = null;
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
updateUI("\nNew Message: " + data);
if (data == "GetGameobjectSpawn")
{
MemoryStream ms = new MemoryStream(1024 * 4);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, GoSpawn);
byte[] teszt = ms.ToArray();
stream.Write(teszt, 0, teszt.Length);
updateUI(teszt.Length + "");
}
}
stream.Close();
mClient.Close();