Avatar billede flvind Nybegynder
27. marts 2006 - 15:34 Der er 10 kommentarer og
2 løsninger

Overfør config fil til anden computer

Hej

Jeg har et program som generer en xml fil som skal benyttes til at konfigurer en ekstern applikation. Problemet er så hvordan jeg skal sende denne fil til den eksterne applikation?
Avatar billede casualty Nybegynder
28. marts 2006 - 09:14 #1
Der er flere muligheder.

Stream via. sockets

Remoting

Webservice

Jeg ville anbefale dig at streame den via en socket forbindelse. Hvis destinationsmaskinen kan acceptere at du connecter på en given port...

Mvh Anders
Avatar billede flvind Nybegynder
28. marts 2006 - 09:20 #2
Hej

Jeg skal udvikle et system som kører på en række klienter, men configureres med en server applikation. Jeg ønsker derfor at min configfil gemt som 'programnavn'.config skal benyttes på klienterne. Jeg laver selv begge applikationer og opsætter både klient og server.

Kan du give et eksempel?
Avatar billede casualty Nybegynder
28. marts 2006 - 09:29 #3
Øjeblik
Avatar billede casualty Nybegynder
28. marts 2006 - 09:45 #4
Serverkode:

public void StartServer(){
    //Ny tcplistener der lytter efter clienter på port 5555
    TcpListener listener = new TcpListener(System.Net.IPAddress.Any,5555);
    listener.Start();

    // Accepter ny client
    Socket socket = listener.AcceptSocket();
    Console.WriteLine("Connection accepted from "+socket.RemoteEndPoint);

    // læs input fra client
    NetworkStream networkStream = new NetworkStream(socket);
    StreamReader reader = new StreamReader(networkStream);
    String text = reader.ReadToEnd();

    reader.Close();
    listener.Stop();

    Console.WriteLine("Server recieved: "+text);
}

Clientkode:

public void SendToServer(){
    //Ny TCPClient der skal connecte til serveren
    TcpClient client = new TcpClient();

    // Connect til server på port 5555
    client.Connect("localhost",5555);

    // Streamwriter der kan streame dine data
    StreamWriter writer = new StreamWriter(client.GetStream());

    // Streamreader der kan læse din configfil
    StreamReader reader = new StreamReader("c://test.config");

    // Stream indholdet fra configfilen til serveren
    writer.Write(reader.ReadToEnd());

    reader.Close();
    writer.Close();
    socket.Close();
}
Avatar billede flvind Nybegynder
28. marts 2006 - 09:52 #5
hmm virker det ikke lidt modsat at min serverapplikation skal connecte til clientapplikationerne som en client?
Avatar billede flvind Nybegynder
28. marts 2006 - 09:52 #6
hvad med placeringen af den fil der sendes
Avatar billede casualty Nybegynder
28. marts 2006 - 09:57 #7
Jeg har lavet en app der virker:

http://bluepage.dk/exp/sockettest.zip

udskift "socket.Close();" med "client.close();"
Avatar billede flvind Nybegynder
28. marts 2006 - 10:07 #8
undskyld at jeg ikke er helt med men er newbie bestemmer app selv hvor filen placeres eller hvad
Avatar billede casualty Nybegynder
28. marts 2006 - 10:11 #9
Nu har jeg vendt det om, således at klienten sender fil til serveren:

Server:

public void StartServer(){
    //Ny tcplistener der lytter efter klienter på port 5555
    TcpListener listener = new TcpListener(System.Net.IPAddress.Any,5555);
    listener.Start();

    // Accepter ny klient
    TcpClient client = listener.AcceptTcpClient();
    Console.WriteLine("Connection accepted");

    // Streamreader der kan læse din configfil
    String assemblyPath = this.GetType().Assembly.Location.Replace( new FileInfo(this.GetType().Assembly.Location).Name,"");
    StreamReader reader = new StreamReader(assemblyPath+@"\test.config");

    // Streamwriter der sender indholdet af configfilen til klienten
    StreamWriter writer = new StreamWriter(client.GetStream());
    writer.Write(reader.ReadToEnd());

    writer.Close();
    reader.Close();
    client.Close();
    listener.Stop();
}

Klient:

public void StartClient(){
    //Ny TCPClient der skal connecte til serveren
    TcpClient client = new TcpClient();

    // Connect til server på port 5555
    client.Connect("localhost",5555);

    // læs output fra serveren
    StreamReader reader = new StreamReader(client.GetStream());
    String text = reader.ReadToEnd();

    reader.Close();
    client.Close();

    Console.WriteLine("Client recieved: "+text);
}

http://bluepage.dk/exp/sockettest2.zip
Avatar billede casualty Nybegynder
28. marts 2006 - 10:14 #10
Som det er nu så leder den efter en fil der hedder test.config. den leder der hvor applikationen ligger

// assemblypath returnerer stien hvor startapplikationen ligger
String assemblyPath = this.GetType().Assembly.Location.Replace( new FileInfo(this.GetType().Assembly.Location).Name,"");
StreamReader reader = new StreamReader(assemblyPath+@"\test.config");

Du kan ogå gøre således:

StreamReader reader = new StreamReader("C:minmappe\minundermappe\test.config");
Avatar billede flvind Nybegynder
28. marts 2006 - 10:37 #11
Jeg ved ikke helt hvad jeg skal gøre forstår ikke helt hvad der sker. Havde tænkt på at sende min config fil ved hjælp af ftp.

Ved heller ikke hvordan jeg skal opdele din app til mine to forskellige app.
Avatar billede flvind Nybegynder
25. april 2006 - 09:25 #12
nu har jeg fundet en klasse som benytter ftp og fået det til at fungere
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