[C#] Server start niet

VB.NET, C#, JAVA, alle programmingtalen kunnen hier besproken worden.

[C#] Server start niet

Berichtdoor R0berto[] » wo jan 24, 2007 1:38

Mijn probleem is als volgt: ik heb een server geschreven in C#, maar als ik de Server-console draai, dan gebeurd er niks...
maw, de Console.WriteLine("Server Started!"); die wordt niet uitgevoerd...

VS2k5 meldt geen rariteiten, dus er moet iets in mijn code mis zijn... kan iemand het vertellen??

ik had eerst wel output, maar toen zat er nog threading-code tussen. Die heb ik ertussenuit gehaald omdat dat niet werkte, maar nou werkt deze code ook niet... :/

Server-class
Code: Selecteer alles
namespace ClientServerClasses
{
    public class Server
    {
        TcpListener     tcpl_Server;
        TcpClient       tcpc_ClientConnections;
        int             int_ServerPort;
        IPAddress       ipa_ServerAddress;

        public Server()
        {
                this.int_ServerPort = 2000;
                this.ipa_ServerAddress = IPAddress.Any;
                this.tcpl_Server = new TcpListener(ipa_ServerAddress, int_ServerPort);
        }

        public void Start()
        {
            tcpl_Server.Start();
            ListenForConnections();
            Console.WriteLine("Server started!");
        }

        private void ListenForConnections()
        {
            try
            {
                tcpc_ClientConnections = tcpl_Server.AcceptTcpClient();

                handleClients();
                Console.Write("Listening for connections!");
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
        }

        public void Stop()
        {
            tcpl_Server.Stop();
            Console.WriteLine("Server Stopped!");
        }

        private void handleClients()
        {
            string str_SendString = "OK!";
            byte[] byte_SendString = Encoding.ASCII.GetBytes(str_SendString);
            byte[] byte_RecievedString = new byte[256];
            string str_RecievedText = String.Empty;
            int i;
            NetworkStream nws_HandleClient = this.tcpc_ClientConnections.GetStream();


            // Loop to receive all the data sent by the client.
            while ((i = nws_HandleClient.Read(byte_RecievedString, 0, byte_RecievedString.Length)) != 0)
            {
                str_RecievedText = System.Text.Encoding.ASCII.GetString(byte_RecievedString, 0, i);

                nws_HandleClient.Write(byte_SendString, 0, byte_SendString.Length);
            }
            Console.WriteLine("Recieved: "+ str_RecievedText);
            Console.WriteLine("Sent: " + str_SendString);
        }
    }
}


Console-Server
Code: Selecteer alles
namespace ConsoleServer
{
    class Program
    {
        static void Main(string[] args)
        {
            Server srv_Srvr = new Server();
            srv_Srvr.Start();
        }
    }
}
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08

Berichtdoor Rhapsody » wo jan 24, 2007 7:38

Zet je TCP listener eens in een aparte thread, volgens mij reageert je UI dan wel en zul je de melding wel krijgen.
In Metal We Trust
Rhapsody
Koning: gebanned @ TF
Koning: gebanned @ TF
 
Berichten: 141
Geregistreerd: wo okt 04, 2006 16:13
Woonplaats: Leersum

Berichtdoor R0berto[] » wo jan 24, 2007 9:51

ahhja.... verdomd :)

zo 's nachts ga je alles vergeten denk ik ofzo :P
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08

Berichtdoor AtleX » di jan 30, 2007 16:20

Hoe heb je dit nu opgelost in de code in je startpost? Ik ben namelijk ook met een heel eenvoudige serverapplicatie bezig en loop compleet vast op dat threading geneuzel. :( :P
Avatar gebruiker
AtleX
 
Berichten: 147
Geregistreerd: za okt 28, 2006 9:35

Berichtdoor R0berto[] » di jan 30, 2007 16:47

void met daarin tcplistener in een thread
in die void een thread creeëren voor het luisteren naar connecties (voor afhandeling)
na het ontvangen van een connectie afhandelen in een nieuwe thread

je moet maar ff roepen als je de code wil zien... maar ik denk dat het je wel moet lukken....
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08

Berichtdoor AtleX » di jan 30, 2007 16:58

Dus, je creëert een thread met je TCPListener erin, en daarin creëer je weer een thread als er een connectie geopend wordt? Volgens mij is een TCPListener thread-aware en dus blockt hij je main thread niet, maar ik kan me vergissen.

R0berto[] schreef:je moet maar ff roepen als je de code wil zien... maar ik denk dat het je wel moet lukken....

Maar toch zou ik graag je code willen zien. :)
Avatar gebruiker
AtleX
 
Berichten: 147
Geregistreerd: za okt 28, 2006 9:35

Berichtdoor R0berto[] » di jan 30, 2007 17:04

Code: Selecteer alles
namespace ClientServerClasses
{
    public class Server
    {
        public Server( int port )
        {
            // Initialize vars
        }

        public void Start()
        {
            thrd_ServerThread = new Thread(new ThreadStart(StartServer));
            thrd_ServerThread.Start();
        }

        private void StartServer()
        {
            this.tcpl_Server = new TcpListener(ipa_ServerAddress, int_ServerPort);
            tcpl_Server.Start();

            thrd_ListenForClients = new Thread(new ThreadStart(ListenForConnections));
            thrd_ListenForClients.Start();
        }

        private void ListenForConnections()
        {
            tcpc_ClientConnection = tcpl_Server.AcceptTcpClient();
            thrd_HandleClient = new Thread(new ThreadStart(handleClients));
            thrd_HandleClient.Start();
        }

        public void Stop()
        {
            // Stop the Server
        }

        public virtual void handleClients()
        {
            // Handle Client Connections
        }
    }
}


Ik hoop dat het zo duidelijk is?? :)
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08


Keer terug naar Programming

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron