Avatar billede maqhem Nybegynder
09. januar 2008 - 12:52 Der er 2 kommentarer og
1 løsning

Socket med Flash

Jeg skal kommunikere mellem Flash og C#, og jeg har fundet denne socket, der i hvert fald kan modtage data: http://www.gnu.org/projects/dotgnu/pnetlib-doc/System/Net/Sockets/Socket.html
Men problemet er, at den for det første kun kan modtage data én gang, at den har en timeout til connection og at jeg ikke kan få den til at sende data tilbage til Flash.

Men jeg har også fået sat denne kode sammen, som virker næsten efter hensigten. Problemet er, at jeg skal angive længden af det data, jeg sender og modtager, og det giver problemer, når jeg sender tilbage til Flash, og gør det upraktisk at arbejde med i C#.
Men jeg kan ikke rigtigt finde ud af at sammensætte de to koder til min brug. Således ser min kode ud:

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace Sock
{
    class Program
    {
        private static IPAddress myIP = IPAddress.Parse("127.0.0.1");
        private static IPEndPoint myServer;
        private static Socket socket;
        private static Socket accSocket;
        private static UInt16 maxRecv;

        static void Main(string[] args)
        {
            maxRecv = 1024;
            btc();
        }
        private static void btc()
        {
            try
            {
                Thread thread = new Thread(new ThreadStart(accp));
                thread.Start();
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
            }
        }
        private static void accp()
        {
            myServer = new IPEndPoint(myIP, Int32.Parse("20000"));
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Bind(myServer);
            socket.Listen(50);
            while (true)
            {
                try
                {
                    accSocket = socket.Accept();
                    if (accSocket.Connected)
                    {
                        Thread thread = new Thread(new ThreadStart(round));
                        thread.Start();
                    }
                }
                catch (Exception ee)
                {
                    Console.WriteLine(ee.Message);
                }
            }
        }
        private static void round()
        {
            Byte[] rec = new Byte[maxRecv];
            NetworkStream acceptStream = new NetworkStream(accSocket);
            acceptStream.Read(rec, 0, rec.Length);
            String recMessage = System.Text.Encoding.Default.GetString(rec);
            rec = new Byte[maxRecv];
            Console.WriteLine(recMessage);

            NetworkStream acceptStreamSend = new NetworkStream(accSocket);
            string str = "[" + recMessage + "]";
            Byte[] bytesSend = new Byte[maxRecv];
            bytesSend = System.Text.Encoding.Default.GetBytes(str);
            acceptStreamSend.Write(bytesSend, 0, bytesSend.Length);
        }
    }
}

På forhånd mange tak.
Avatar billede maqhem Nybegynder
09. januar 2008 - 12:54 #1
Og så skal socketen være multithread, eller hvad det hedder. Altså så et vilkårligt antal klienter kan connecte uden problemer.
Avatar billede maqhem Nybegynder
09. januar 2008 - 12:57 #2
Det kunne være for sejt med en socket, der bare kan modtage datane og sende den samme besked tilbage til Flash - måske med klammer omkring eller noget, så jeg kan se, den har været igennem C#.

Og måske to metoder - en til at sende tilbage til samme klient, og en til at sende en besked til alle connectede klienter.
Avatar billede maqhem Nybegynder
09. november 2008 - 19:50 #3
Ikke mere at komme efter her. Jeg har også fundet ud af det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester