Avatar billede alteredsoul Nybegynder
22. januar 2003 - 20:39 Der er 4 kommentarer og
1 løsning

Streaming...

Hejsa.

Jeg vil gerne vide lidt mere om .net streaming da jeg er ved at lave en chat i .net platformen og denne gerne skulle kunne streame chatten ud til brugerne så der ikke opstår lag og opdaterings tider. Lidt ala Server.Push i asp men bare med brug af net istedet...

Nogen der kan hjælpe med tutorials, eksempler etc. så ville jeg blive meget glad..
Avatar billede simon.ulsnes Nybegynder
22. januar 2003 - 22:34 #1
Det er faktisk abnormt enkelt...
Man har en stream af en bestemt type (fx NetworkStream, FileStream, MemoryStream) og så en StreamReader og en StreamWriter som så foretager alt det praktiske.

For eksempel, et klientprogram til et lille serverprogram jeg har lavet som returnerer en tilfældig sætning fra en XML-fil:

using System.IO;
using System.Net;
using System.Net.Sockets;
public class Client
{
  public static void Main(string[] args)
  {
    string host = "localhost";
    int port = 666;
    TcpClient client = new TcpClient();
    client.Connect(host, port);
    NetworkStream stream = client.GetStream();
    StreamReader reader = new StreamReader(stream);
    stream response = reader.ReadToEnd();
    reader.Close();
    stream.Close();
    client.Close();

    Console.WriteLine(response);
  }
}

Jeg ville mene at det siger sig selv hvad hver enkelt linje gør, men du må lige sige til hvis der er noget du ikke er helt med på...

// Simon
Avatar billede alteredsoul Nybegynder
23. januar 2003 - 01:58 #2
Hvordan ser serveren så ud? og hvordan laver jeg en server exe fil i net som kan skrive alt hvad en chat bruger skriver ud til public ?
Avatar billede simon.ulsnes Nybegynder
23. januar 2003 - 07:18 #3
I dette tilfælde har jeg valgt ikke at lave serveren som en Windows Service, som man nok normalt ville gøre, derfor har jeg et while-loop som sørger for at lytte efter connections.

using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
public class Server
{
  public static void Main(string[] args)
  {
    Server s = new Server();
  }

  public Server()
  {
    TcpListener listener = new TcpListener(666);
    listener.Start();
    while (true)
    {
      ThreadPool.QueueUserWorkItem(new WaitCallback(HandleConnection), listener.AcceptTcpClient());
    }
  }

  public void HandleConnection(object state)
  {
    TcpClient client = (TcpClient)state;
    NetworkStream stream = client.GetStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write("Hejsa!");
    writer.Close();
    stream.Close();
    client.Close();
    Console.WriteLine("Connection handled.");
  }
}

Sådan cirka...

// Simon
Avatar billede simon.ulsnes Nybegynder
23. januar 2003 - 07:21 #4
Bemærk at listener.AcceptTcpClient() blokker for dit program indtil der modtages en TCP forespørgsel om en forbindelsen. Jeg har lavet en klasse (SmartListener) som lytter uden at blokke som du gerne må få koden til...
Avatar billede alteredsoul Nybegynder
23. januar 2003 - 14:30 #5
Kan du ikke kontakte mig på Icq: 85322492 eller MSN: kasper@ellernoget.dk? :-)
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
Kurser inden for grundlæggende programmering

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