C# Server - Client TCP

Indította ktomi, 2016 július 30, 02:46:08 DÉLELŐTT

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

ktomi

Ü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();


Powered by EzPortal