Avatar billede tras Juniormester
19. april 2007 - 21:47 Der er 5 kommentarer og
1 løsning

Menu i C#

Hej jeg vil gerne lave en menu så jeg kan vælge at se info om min server før jeg starter den og så havde muligheden til at starte den fra menuen af. Er der ikke nogle som vil hjælpe mig med dette.

Her er min kode til min server


using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Collections;

public class Server
{
    // Instance variable to hold names and addresses
    private Hashtable addressTable;

    // main method to start the erver application
    public static void Main()
    {
        Server s = new Server();
        s.Start();
    }

    public Server()
    {
        Console.WriteLine("Initializing Server data");
        // Set up names and addresses
        addressTable = new Hashtable(10);
        addressTable.Add("Kasper", "d66");
        addressTable.Add("Nick", "a1");
        addressTable.Add("Martin", "kommer altid for sent");
        addressTable.Add("Thomas", "a2");
    }

    public void Start()
    {

        Socket serverSocket = null;
        Socket socket = null;
        NetworkStream stream = null;
        StreamWriter writer = null;
        StreamReader reader = null;

        Console.WriteLine("Starting server");
        try
        {
            // Register service on port 1234
            Console.WriteLine("Applying IP");
            string strHostName = Dns.GetHostName();
            IPHostEntry ipEntry = Dns.GetHostByName(strHostName);
            IPAddress[] addr = ipEntry.AddressList;
            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            serverSocket.Bind(new IPEndPoint(addr[0], 1234)); // evt lige kig i addr og se om noget kan bruges først. Har ikke selv testet dette.
            Console.WriteLine("IP setup - "+addr[0]);

            Console.WriteLine("Server is now ready");
            serverSocket.Listen(0);
            //Wait for a connection from a client
            while (true)
            {
                //Wait here and listen for a connection
                Console.WriteLine("Waiting for client connection ...");
                // Accepting a connection provides a socket to handle
                // client-server communications
                socket = serverSocket.Accept();
                Console.WriteLine("Connection Accepted");
                stream = new NetworkStream(socket);
                reader = new StreamReader(stream);
                writer = new StreamWriter(stream);

                Console.WriteLine("Reading client data");
                String queryString = reader.ReadLine();
                Console.WriteLine("Client data is : {0} ", queryString);

                // Now obtain information from addressTable
                // need to cast the result to a string as Object is returned
                // by default
                String result = (string)addressTable[queryString];

                Console.WriteLine("Result is {0} ", result);

                // Return information to client
                // Get a communications stream from the socket
                Console.WriteLine("Sending data to client");
                writer.Write(result);
                writer.Write(" test");
                writer.Flush();
                Console.WriteLine("Data sent, closing connection");

                reader.Close();
                reader = null;
                writer.Close();
                writer = null;
                socket.Close();
                socket = null;
            }
        }
        catch (SocketException e)
        {
            Console.WriteLine("Error initializing Socket: " + e.ToString());
        }
        catch (IOException exp)
        {
            Console.WriteLine("Error in Socket Communication: " + exp.ToString());
        }
    }
}
Avatar billede skov_p Praktikant
19. april 2007 - 22:12 #1
Der er vel ikke så meget at se inden den starter.
Du skal fjerne Main metoden og så kan du fra din evt. GUI kalde
Server server = new Server();
Du kan evt. lægge Start(); ind i constructoren i din server class så du er fri for at kalde server.Start();

I stedet for din Console.WriteLine kan du lave en public List<string> som du tilføjer dine info til.

Så kan du fra din menu vælge at se alle events eller den sidste eller de sidste 10 o.s.v.
Avatar billede tras Juniormester
20. april 2007 - 08:21 #2
det er jeg med på. det er mere hvordan man laver menuen :)
Avatar billede skov_p Praktikant
20. april 2007 - 10:02 #3
Så du vil gerne forbinde til din "server" fra en GUI.

I så fald vil jeg lave en ny GUI application der bruger din server klasse.
Den kan du starte minimeret og "show in taskbar" = false.
Så kunne du tilføje et Tray Icon du kan bruge til at åbne din menu

Er det rigtig forstået?
Avatar billede tras Juniormester
20. april 2007 - 10:29 #4
yes
Avatar billede tras Juniormester
24. april 2007 - 14:32 #5
Dropper det med menuen du kan bare komme med et svar så sender jeg dig nogle points :P
Avatar billede skov_p Praktikant
24. april 2007 - 14:54 #6
Du kan evt. lave en logfil i din server som du kan indlæse for at se status
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