Avatar billede mikeo Nybegynder
08. august 2005 - 14:27 Der er 5 kommentarer og
1 løsning

Client server

Hej!

Jeg har følgende problem, der ikke burde være så svært, men jeg synes jeg er løbet lidt død...
Jeg skal lave server og client til følgende scenarie:

En server venter på en connection fra en hvliken som helst ip adresse på port 1234.
Når der bliver oprettet en forbindelse udskrives clientens IP.
Herefter er der lidt kommunikatione frem og tilbage mellem server og client, inden forbindelsen forbindelsen lukkes.

(eks. på kommunikationen kan være
serveren sender: "WELCOME! SEND USERNAME"
clienten sender: "MIKEO"
serveren sender: "SEND PASS"
clienten sender: "TEST123"
...og så videre...

Både hos serveren og clienten udskrives på skærmen det der sendes og modtages.

Håber nogen kan hjælpe...
Avatar billede arne_v Ekspert
08. august 2005 - 14:31 #1
server bruger TcpListener

client bruger TcpClient

begge wrapper Stream'en i en StreamReader og StreamWriter
Avatar billede arne_v Ekspert
08. august 2005 - 14:33 #2
simpelt eksempel:

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

class Server
{
    public static void Main(string[] args)
    {
        TcpListener server = new TcpListener(IPAddress.Any, 1234);
        server.Start();
        TcpClient client = server.AcceptTcpClient();
        StreamReader rdr = new StreamReader(client.GetStream());
        StreamWriter wrt = new StreamWriter(client.GetStream());
        string line;
        while((line = rdr.ReadLine()) != null)
        {
            wrt.WriteLine("Jeg har modtaget: " + line);
            wrt.Flush();
        }
        rdr.Close();
        wrt.Close();
        client.Close();
        server.Stop();
    }
}

og:

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

class Client
{
    public static void Main(string[] args)
    {
        TcpClient client = new TcpClient("localhost", 1234);
        StreamWriter wrt = new StreamWriter(client.GetStream());
        StreamReader rdr = new StreamReader(client.GetStream());
        wrt.WriteLine("Jeg hedder Arne");
        wrt.Flush();
        Console.WriteLine(rdr.ReadLine());
        wrt.WriteLine("Dette er en test");
        wrt.Flush();
        Console.WriteLine(rdr.ReadLine());
        wrt.Close();
        rdr.Close();
        client.Close();
    }
}
Avatar billede mikeo Nybegynder
08. august 2005 - 14:54 #3
Tak for det. Det virker lige efter hensigten.
Eneste jeg mangler er lige hvordan jeg fanger IP adressen på den client der connecter til serveren...
Avatar billede arne_v Ekspert
08. august 2005 - 15:02 #4
Hvis du tilfældigvis bruger .NET 2.0 beta så kan du bruge:

ditclientobjet.Client.RemoteEndPoint

men i .NET 1.1 er Client property'en protected ...
Avatar billede arne_v Ekspert
08. august 2005 - 15:02 #5
og et svar
Avatar billede mikeo Nybegynder
08. august 2005 - 15:07 #6
okay...så der skal enten skiftes .NET eller laves en workaround.
Tak for hjælpen c")
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