Avatar billede tras Juniormester
18. april 2007 - 12:41 Der er 14 kommentarer og
1 løsning

Find computers ip selv i console apply.

Jeg er ved at lave et program som jeg gerne vil havde skal finde en ip selv. intil nu har jeg måtte leve med selv at lave det om inde fra programmerings bruger fladen.

serverSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.162.50"), 1234));

er der en måde man kan få den til selv at hente ipen.!?
Avatar billede prof2 Nybegynder
18. april 2007 - 12:50 #1
Hente IPen fra maskinen programmet køres på? Kan du ikke bruge 127.0.0.1?
Avatar billede tras Juniormester
18. april 2007 - 12:51 #2
her er lidt mere kode så kan man skabe sig et overblik

try
        {
            // Register service on port 1234
            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            serverSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.162.50"), 1234));

            Console.WriteLine("Server bound to console");
            serverSocket.Listen(0);
            //Wait for a connection from a client
            while (true)
            {
Avatar billede tras Juniormester
18. april 2007 - 12:51 #3
nej det vil clienten ikke godtage :(
Avatar billede tras Juniormester
18. april 2007 - 12:52 #4
første jeg prøvede
Avatar billede prof2 Nybegynder
18. april 2007 - 13:05 #5
Kan dette bruges til noget:

using System.NET

...
...


strHostName = DNS.GetHostName ();
IPHostEntry ipEntry = DNS.GetHostByName (strHostName);
IPAddress [] addr = ipEntry.AddressList;

Måske indeholder addr arrayet en adresse du kan bruge?
Avatar billede tras Juniormester
18. april 2007 - 13:07 #6
Kan ikke se hvordan du vil inplementere det der?`!
Avatar billede prof2 Nybegynder
18. april 2007 - 13:11 #7
try
        {
            // Register service on port 1234
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("Server bound to console");
            serverSocket.Listen(0);
            //Wait for a connection from a client
            while (true)
            {
Avatar billede tras Juniormester
18. april 2007 - 13:25 #8
the name 'strHostName' does not exist in the current context
the name 'DNS' does not exist in the current context
the name 'DNS' does not exist in the current context
the name 'strHostName' does not exist in the current context
Avatar billede tras Juniormester
18. april 2007 - 13:27 #9
Her er hele koden vis det hjælper.

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
            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("Server bound to console");
            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.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 prof2 Nybegynder
18. april 2007 - 13:31 #10
Du skal lige sige at strHostName er en String:
String strHostName = DNS.GetHostName();

Men ved ikke hvorfor DNS ikke findes. Det er blot et eksempel jeg fandt på nettet.
Avatar billede tras Juniormester
18. april 2007 - 13:40 #11
ja så føljelig er det en string der mangler :) man hvad gør vi lige med DNS?! kommer jo ikke til at virke uden det virker
Avatar billede tras Juniormester
18. april 2007 - 14:38 #12
Så fandt jeg fejlen. det er ikke DNS men Dns :P
Avatar billede prof2 Nybegynder
18. april 2007 - 17:38 #13
Ohh. Okay. Så det virker nu?
Avatar billede arne_v Ekspert
18. april 2007 - 19:28 #14
TcpListener og TcpClient er lidt nemmere at bruge end Socket
Avatar billede tras Juniormester
19. april 2007 - 09:02 #15
Det vil jeg så lige prøve at grave lidt i og se hvad det kan :D
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

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