C# programmering Per P. Madsen Afd. for Proceskontrol

Slides:



Advertisements
Lignende præsentationer
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
Advertisements

Notation Oversigt Kapitel 18.
Velkommen til Softwarekonstruktion
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
Programmeringsparadigmer.
07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Akademiuddannelsen i informationsteknologi Softwarekonstruktion
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Programmeringsteknologi: Lektion 1
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
Objektorienteret programmering
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Objektorienteret programmering
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
Begreber og Redskaber 2 BRP.
Grundlæggende elementer i UML
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Eksempel på realisering af domænemodel
Objekter og klasser Rasmus D. Lehrmann DM
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Per P Madsen AAU1 Del 2 : Netværkslaget - Protokoller - Routing - Quality of service - IPv4 og IPv6.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Forelæsning 2.2 Tilstand og opførsel (repetition)
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Per P Madsen AAU1 Del 4 : Sessions-, presentations- og applikationslaget - Applikationsprotokoller. - RPC og RMI. - Digital audio og Voice over IP. - RTP.
C#: Data Typer. 2 Nordjyllands Erhvervakademi Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
Unified Modeling Language
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Programmering 1 Java/C#
Forelæsning Uge 4 – Mandag
Abstraktioner.
Dokumentation.
Dokumentation.
Dokumentation.
Præsentationens transcript:

C# programmering Per P. Madsen Afd. for Proceskontrol Grundlæggende Datanet C# programmering Per P. Madsen Afd. for Proceskontrol Institut for elektroniske systemer Aalborg Universitet Per Printz Madsen AAU

Del 1: Objekt-orienteret programmering og C# Intro. til UML og OO* C# programstruktur. Typer, kontrolstrukturer. Data og metoder. Per Printz Madsen AAU

Software udviklingsmetoder. Overordnet metode: Fastlæg kravene til systemet. ’’Kravspecifikation’’ Analyser omverdnen og systemet. ’’Usecase’’ Beskriv strukturen af systemet. ’’Klassediagram’’ Design systemet. ’’Algoritmer, sekvenser og tilstande’’ Programmer. Løbende test af enkelte dele. Accept test. ’’Opfylder systemet kravspecifikationen?’’ Per Printz Madsen AAU

Water-falls metoden Per Printz Madsen AAU

Spiral-modellen Per Printz Madsen AAU

UML Unified Modeling Language Standardiseret specifikations sprog til: understøttelse af objektorienteret software udvikling. beskrivelse af objektorienteret software. Per Printz Madsen AAU

UML Unified Modeling Language Functional Model Viser funktionaliteten af systemet fra brugerens synspunkt. Beskrivelsesform: Use Case Diagram. Object Model Viser strukturer og understrukturer af systemet ved hjælp af klasser, attributter, operationer og associationer. Beskrivelsesform: Deployment Diagram og Class Diagram. Dynamic Model Viser den interne adfærd af systemet. Beskrivelsesform: Sequence Diagram, Activity Diagram og State Machine Diagram. Per Printz Madsen AAU

Analyse fasen Kik på brugen af systemet. Kik på den fysiske struktur. Anvendelsesområdet. Kik på den fysiske struktur. Hardwaren der anvendes. Kik på problemets struktur. Problem området. Per Printz Madsen AAU

Use Case diagram Per Printz Madsen AAU

Aktivitets diagram for sæt parametre Per Printz Madsen AAU

Design layout Øjet kikker først øverst til venstre. Ved dialog, husk Cancel/Annuller nederst til højre. Ved brug af farver, ha’ en veldefineret betydning. Samme effekt af samme handling. Indlæs fil dialog Vælg fil Default.txt Hjælp Indlæs Annuller Per Printz Madsen AAU

Deployment Diagram - Hvor skal de enkelte software dele placeres? Per Printz Madsen AAU

Klasse diagram - Strukturen af selve problemet. Per Printz Madsen AAU

Design fasen Sekvenser. Hvem kalder hvem? Objekt tilstande. Adfærd af objekterne. Algoritme design. Per Printz Madsen AAU

Sekvensdiagram Per Printz Madsen AAU

Objekt tilstande Per Printz Madsen AAU

Algoritmer Pseudo kode Aktivitetsdiagrammer. Fx for RegAlgo run. Hent ny måleværdi og ny reference. Beregn fejlen: E Beregn outputtet: O = P*E + I*EI + D*(E-oldE) Sæt status: EI= EI+E og oldE= E Per Printz Madsen AAU

Objekt orienteret programmering Nu er både den statiske og dynamiske struktur på plads Så kan programmeringen begynde. Per Printz Madsen AAU

C# (CSharp) Et objektorienteret programmeringssprog. Første version fra MicroSoft i 2001 Nyeste version er C# 2005 Per Printz Madsen AAU

Forskellige compilere .NET arkitekturen filnavn.vb filnavn.cs filnavn.cpp Forskellige compilere Fx: csc JIT compiler Assemblies .dll eller .exe (CIL) Maskin kode Per Printz Madsen AAU

C# introduktion. using System; Namespace MyFirst { class eks1 public static void Main() Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her: "); string navn = Console.ReadLine(); Console.WriteLine("Hej igen - " + navn + ". Jeg er en meget arbejdsom medhjælp."); } Per Printz Madsen AAU

C# program struktur. De eksisterende systemer, der bruges. Navnet på dette system Komponet1(class) Data og kode Komponet2(class) Data og kode Komponet3(class) Data og kode Komponet4(class) Data og kode Per Printz Madsen AAU

Using System; ...... Namespace ...... { classe komponentnavn1 Data. metoder. } classe komponentnavn2 class startkomponent static void Main() { Data; kode; Per Printz Madsen AAU

private static float a; private static int funk1(float ap) int a; using System; Namespace MyFirst { class Eks1 private static float a; private static int funk1(float ap) int a; a = (int)ap; return a; } private int funk2(float ap) return 2*(int)ap; static void Main(string[] args) int a = funk1(3.4f); Eks1 p = new Eks1(); a= p.funk2((float)a); Per Printz Madsen AAU

C#- overordnet Alle programalgoritmer og data skal pakkes ind. – typisk i en klasse, dvs. ingen globale funktioner eller data. Et eksekverbart program indeholder en metode Main() applikationens startpunkt. C# er case-sensitive. C# har operator- og metodeoverloading. Ingen multibel arv. Alle klasser arver fra Object Garbage-collection Per Printz Madsen AAU

Primitive datatyper type Antel byte Område Special format for literals bool 1 true false char 2 'A' '\x0041' '\u0041' sbyte -128 .. 127 byte 0 .. 255 short -32768 .. 32767 ushort 0 .. 65535 int 4 -2147483648 .. 2147483647 uint 0 .. 4294967295 U suffix long 8 0 .. 2^64-1 L or l suffix ulong -2^62 .. 2^63-1 U/u and L/l suffix float +-1.4E-45 .. +-3.4E38 F or f suffix double +-5.0E-324 .. +-1.7E308 decimal 16 +-1E28 .. +-7.9E28 M or m suffix string "hello", @"C:\dir\f.txt" Per Printz Madsen AAU

Tilskrivninger int x = 0; float[] ya= new float[10]; double[] za= {1,2,3,4,5,6,7}; int[,,] x3a= new int[3,4,5]; String tal = "3,4E-4"; Boolean flag1 = true; uint stort_tal = 23456789; ya[0]= (float)za[6]; x3a[1,2,3]= (int)stort_tal; ya[1]= (float)System.Convert.ToDouble(tal); tal = "dette er en floatværdi: " + tal; za[3] = Math.PI * Math.Cos(ya[1]) - 3; Per Printz Madsen AAU

private static float a; private static int funk1(float ap) int a; using System; Namespace MyFirst { class Eks1 private static float a; private static int funk1(float ap) int a; a = (int)ap; return a; } private int funk2(float ap) return 2*(int)ap; static void Main(string[] args) int a = funk1(3.4f); Eks1 p = new Eks1(); a= p.funk2((float)a); Per Printz Madsen AAU

Access Modifiers Public: Fuld access. Private: Kun access fra klassen selv. Protected: Klassen selv og de klasser, der arver fra denne klasse. Internal: Kun access fra samme assembly (file). Per Printz Madsen AAU

Beregninger +, -, * , / og % (modulus) De sædvanlige regler gælder: 2+3*4 = 2+(3*4) = 14 Math klassen indeholder statiske metoder: Cos, Sin, Tan, Exp, Log osv. Divideres 2 hele tal (byte,int, long,,) , fås et helt tal ud: 23/4 giver 5 Divideres to tal, hvoraf det ene er et reelt tal, så fungerer alt som normalt 23%4 giver 3, fordi 4 går op i 23 5 gange med 3 til rest’ Per Printz Madsen AAU

Kontrolstrukturen: if-else Relationer >, <, >=, <=, ==, != Type test is eks: ya is float[] Logiske ||, &&, ! eks: (x<=y) && (y< z) Bit vis logik &, |, ^, ~ if (x < y) { min = x; max = y; } else min = y; max = x; Per Printz Madsen AAU

Kontrolstrukturen: switch-case int x= 4; switch (x) { case 1: Console.WriteLine("x=1"); break; case 2: case 3: Console.WriteLine("x= 2 eller 3"); default: Console.WriteLine("x er ikke lig 1,2 eller 3"); } Per Printz Madsen AAU

Kontrolstrukturer: Loop double[] databuf = new double[5]; int i; for (i = 0; i < 5; i++) { databuf[i] = 0.0; } i=0; while (i<5) databuf[i] = i = i+1; // i++; i+=1; foreach (double x in databuf) Console.WriteLine(x); Per Printz Madsen AAU

Input/output float b = 29; Console.WriteLine("a= {0,6:F2}", b); Console.WriteLine("a= {0,-6:X}", b); b = .678e2F; string str1 = string.Format("a= {0,7:F2}", b); string str2= "Lidt mere tekst: \t"; string str3 = @" \dir\src\flie.c"; Console.WriteLine(str2 + str1 + str3); Format: D Decimaltal. E Exponent. F Fixed point. P Procent. X Hex. a= 29,00 a= 1D Lidt mere tekst: a= 67,80 \dir\src\flie.c Per Printz Madsen AAU

Skrivning til fil FileStream stream = new FileStream("udfil.txt", FileMode.Create); StreamWriter filoutput = new StreamWriter(stream); filoutput.WriteLine("a= {0,5:f2}", 5); filoutput.Flush(); filoutput.Close(); Filen: udfil.txt a= 5,00 Per Printz Madsen AAU

Binær fil FileStream bstream= new FileStream("udfil.bin", FileMode.Create); BinaryWriter bfil = new BinaryWriter(bstream); BinaryReader bin = new BinaryReader(bstream); bfil.Write((double)b); bfil.Write((double)b + 1); bfil.Write((double)b + 2); bstream.Seek(0, SeekOrigin.Begin); Boolean eof = false; while (!eof) { try Console.WriteLine("in værdi= {0,7:f2}",bin.ReadDouble()); } catch (EndOfStreamException) eof = true; bfil.Close(); Per Printz Madsen AAU

try-catch-throw static void ProcessString(string s) { if (s == null) throw new Exception("ProcessString: - Parameter is null\n"); } //------------------------------------------------------- try string s = null; ProcessString(null); catch (Exception e) Console.WriteLine("{0} \n-- Exception caught. --", e); Per Printz Madsen AAU

Udskrift ved fanget exception System.Exception: ProcessString: - Parameter is null at csharpEks.Program.ProcessString(String s) in C:\Documents and Settings\ppm\Dokumenter\Undervisning\Bila\csharpEks\Program.cs:line 62 at csharpEks.Program.Main(String[] args) in C:\Documents and Settings\ppm\Dokumenter\Undervisning\Bila\csharpEks\Program.cs:line 170 -- Exception caught. -- Per Printz Madsen AAU

Metode-overloading void udskriv(float a) { .... } void udskriv(int a) { .... } De kan adskilles hvis: Forskellige typer af parametre. Forskellige antal parametre. Forskellig overføringsmetode (value/ref/out). Per Printz Madsen AAU

Parameter overføring void inc(int x) { x=x+1;} void inc(ref int x) { x=x+1;} void readback(out string tekst){tekst=Console.Read();} ......... int val = 3; inc(val); // val har værdien 3 efter kaldet inc(ref val); // val har værdien 4 efter kaldet String txt; Readback(out txt); Per Printz Madsen AAU

Constructor class Rectangle { int x,y,h,w; public Rectangle(int x, int y, int h, int w) {this.x=x; this.y=y; this.h=h; this.w=w;} public Rectangle(int h, int w) {this.x=0; this.y=0; this.h=h; this.w=w;} public Rectangle() {this.x=0; this.y=0; this.h=50; this.w=100;} ..... } Rectangle rec1= new Rectangle(10,10,30,50); Rectangle rec2= new Rectangle(); Per Printz Madsen AAU

Del 2: Avanceret C# programmering WindowForm programmering. Grafik. Flere-trådet programmering. Netværksprogrammering. Database access. Per Printz Madsen AAU

Eksempel: SimpelPlot Per Printz Madsen AAU

Klassediagram Per Printz Madsen AAU

Event styret programmering. Kø Museknapper Musebevægelse Tastatur Timer Netværk Osv. Eventkandler løkke private void timer_Tick(object sender, EventArgs e) { ........ } private void but_Click(object sender, EventArgs e) Per Printz Madsen AAU

Grafik. Skaf ’’Graphics’’ objektet for det du vil tegne på. Fx: 0,0 Graphics g= grafBox.CreateGraphics(); Pen pen = new Pen(Color.Black,3); g.DrawLine(pen, 0, 0, 100, 100); 0,0 Per Printz Madsen AAU

Grafik. Skal gentegnes når: Vindue flyttes, foran liggende vindue fjernes, osv. Løsning: Re-tegn hver gang der komme et Paint-event. private void plot_but_Click( object sender, EventArgs e) { PlotForm pwin = new PlotForm(); pwin.setfilname(filename); pwin.setData(databuf); pwin.Show(); } private void grafBox_Paint(object sender, PaintEventArgs e) { g = e.Graphics; pen= new Pen(gcolor,1); for (int i = 0; i < symboler.Count; i++) ((gsymbol) symboler[i]).plot(g, pen); } Per Printz Madsen AAU

Vis eksempel. Per Printz Madsen AAU

Flere trådet programmering. Ofte består et program af flere parallelle opgaver. Behandel data fra net. Logning af status. Udskrift på skærmen. Behandling af kommando fra skærmen. osv. Strukturmæssigt er det nemmest at betragte disse programmer hver for sig. Dvs. flere parallelle programmer på en maskine. Flere trådet programmering. Per Printz Madsen AAU

To tråde: t1 og t2. static Thread t1, t2; static void traad1() { while (true) { Console.WriteLine("hej jeg er traad 1"); t2.Resume();} } static void traad2() Console.WriteLine("hej jeg er traad 2"); t2.Suspend(); } static void Main(string[] args) t1 = new Thread(new ThreadStart(traad1)); t2 = new Thread(new ThreadStart(traad2)); t1.Start(); t2.Start(); Per Printz Madsen AAU

Thread interface. Prioritet: Sleep: Join: Abort: t1.Priority = ThreadPriority.BelowNormal; //Normal(default),BelowNormal,Lowest,AboveNormal,Highest Sleep: Thread.Sleep(500); Join: t1.Join(); Abort: t1.Abort(); Per Printz Madsen AAU

Flere trådet programmering – nemt, men pas på. Race condition. Alle tråde kan tilgå samme, ikke lokale data. Problem: Ikke konsistente data. Løsning: Udelelig tilgang til fælles data (Mutual exclusion). Deadlock. To eller flere tråde venter på hinanden. Ingen kan køre videre før en kører videre. Mutual exclusion kan medføre deadlock. Løsning: Brug mutual exclusion rigtigt. Per Printz Madsen AAU

Mutual exclusion Tråd 1 Tråd 2 Læser x; Læser x; x=x + a; Skriv x; Per Printz Madsen AAU

Lock af område. class Databuf { double a; public double DataVal set { lock (this) { a = value; } get { return a; Per Printz Madsen AAU

Monitor kald. class RingBuffer { const int size = 10; char[] buf = new char[size]; int inptr = 0, udptr=0, Antdata=0; public void put(char ch) lock (this) { while (Antdata == size) Monitor.Wait(this); buf[inptr]=ch; inptr= (inptr + 1) % size; Antdata++; Monitor.PulseAll(this); } public char get() while (Antdata == 0) Monitor.Wait(this); char ch = buf[udptr]; udptr = (udptr + 1) % size; Antdata--; return ch; Per Printz Madsen AAU

Deadlock Resurse 1 Ønsker lock Har lock Tråd 1 Tråd 1 Resurse 2 Per Printz Madsen AAU

Netværks-programmering Socket klassen klassisk API. TCPListener og TcpClient Easy to use lag oven på Socket. HttpListener og WebRequest Kan bruges ved kommunikation gennem firewalls Per Printz Madsen AAU

TCPListener static void Main(string[] args) { TcpListener tcpl = new TcpListener(IPAddress.Any,60080); tcpl.Start(); do { try Socket sock = tcpl.AcceptSocket(); ServerThread st = new ServerThread(sock); Thread th = new Thread(new ThreadStart(st.Th1)); th.Start(); } catch (Exception e) Console.WriteLine("Exception message:{0}", e.Message); } while (true); Per Printz Madsen AAU

TCPListener class ServerThread { Byte[] indata = new Byte[256]; ASCIIEncoding aencoder = new ASCIIEncoding(); Socket sock; public ServerThread(Socket s) {this.sock=s;} public void Th1() int n= sock.Receive(indata,indata.Length,0); sock.Send(indata, n, 0); Console.WriteLine("Modtagen data: " + aencoder.GetString(indata, 0, n)); sock.Close(); } Per Printz Madsen AAU

TCPClient static void Main(string[] args) { Byte[] indata= new Byte[256]; ASCIIEncoding aencoder= new ASCIIEncoding(); if (args.Length != 2) Console.WriteLine( "TCPClient server tekst fx. TCPClient localhost hej<cr>"); } else TcpClient cl= new TcpClient(args[0],60080); Stream cls= cl.GetStream(); cls.Write(aencoder.GetBytes(args[1]),0,args[1].Length); int n=cls.Read(indata,0,indata.Length); Console.Write("De modtagene data: " + aencoder.GetString(indata,0,n)); Per Printz Madsen AAU

HTTPserver public static void SimpleHTTPListener() { HttpListener listener = new HttpListener(); listener.Prefixes.Add(@"http://*:8080/"); listener.Start(); while (true) { HttpListenerContext context = listener.GetContext(); HttpListenerRequest request = context.Request; Console.WriteLine(request.Url.ToString()); HttpListenerResponse response = context.Response; string responseString = "<HTML><BODY> Hello world!</BODY></HTML>"; byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); response.ContentLength64 = buffer.Length; System.IO.Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); Console.WriteLine("svar"); } listener.Stop(); Per Printz Madsen AAU

WebRequest public static void Main() { WebRequest request = WebRequest.Create("http://localhost:8080/tmp"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); Console.WriteLine(responseFromServer); reader.Close(); dataStream.Close(); response.Close(); } Per Printz Madsen AAU

DataBase håndtering. User ID Password Filnavn C# program Microsoft Access database C# program Opret Connection. Opbyg SQL Query Kommando Udfør SQL Query kommando SELECT FROM .. INSERT INTO .. UPDATE .. DELETE FROM .. Per Printz Madsen AAU

Opret Connection OleDbConnection conn = new OleDbConnection(@" Provider=Microsoft.Jet.OLEDB.4.0; User Id=;Password=; Data Source= db1.mdb"); conn.Open(); Per Printz Madsen AAU

Opbyg SQL Query kommando Udfør SQL Query kommando OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM Addresses"; dbReader = cmd.ExecuteReader(); while (dbReader.Read()) { string fornavn = (string)dbReader.GetValue(1); string efternavn = (string)dbReader["Address"]; string telenr = (string)dbReader["HomePhone"]; Console.WriteLine("{0},\t{1},\t{2}", fornavn, efternavn, telenr); } Per Printz Madsen AAU

Opbyg SQL Query kommando Udfør SQL Query kommando cmd = conn.CreateCommand(); cmd.CommandText = @"INSERT INTO Addresses (FirstName, LastName, Address, HomePhone) VALUES(""Viggo"", ""Sørensen"", ""Lokesvej 17"", ""12345678"")"; cmd.ExecuteNonQuery(); Per Printz Madsen AAU