22. januar 2003 - 20:39Der 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..
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
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å...
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()); } }
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...
Kan du ikke kontakte mig på Icq: 85322492 eller MSN: kasper@ellernoget.dk? :-)
Synes godt om
Ny brugerNybegynder
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.