vyuka:cviceni:y36sps:semestralky:michao1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vyuka:cviceni:y36sps:semestralky:michao1 [2009/06/06 08:30] michao1vyuka:cviceni:y36sps:semestralky:michao1 [2009/06/06 09:09] (current) michao1
Line 1: Line 1:
 ====== Ondřej Michalčík ====== ====== Ondřej Michalčík ======
  
-**Zadání**: ''Program, pro podporu debugu k programu webcommunicator. Webcommunicator je program podobny ICQ, ktery je napsany v C#, a pres ktery +**Zadání**:   Program, pro podporu debugu k programu webcommunicator.  
 +              Webcommunicator je program podobny ICQ, ktery je napsany v C#, a pres ktery 
               mezi sebou komunikuji klienti. Komunikace probiha pomoci command patternu, tzn. jednotlive zpravy, stavy a registrace probihaji tak ze                mezi sebou komunikuji klienti. Komunikace probiha pomoci command patternu, tzn. jednotlive zpravy, stavy a registrace probihaji tak ze 
               se pres sit posilaji serializovane objekty (commandy). Vice o programu webcommunicator na http://webcommunicator.clearwiki.com/.               se pres sit posilaji serializovane objekty (commandy). Vice o programu webcommunicator na http://webcommunicator.clearwiki.com/.
               Prihlasovaci udaje jsou login: lordondrak@donory.cz a heslo: ondrak1.                 Prihlasovaci udaje jsou login: lordondrak@donory.cz a heslo: ondrak1.  
- 
               Program bude odchytávat tcp pakety a bude z nich vyčítat commandy a jejich vlastnosti.               Program bude odchytávat tcp pakety a bude z nich vyčítat commandy a jejich vlastnosti.
               Program bude v grafickem uzivatelskem rozhrani zobrazovat jednotlive commandy, ktere si mezi sebou posilaji klient se serverem.               Program bude v grafickem uzivatelskem rozhrani zobrazovat jednotlive commandy, ktere si mezi sebou posilaji klient se serverem.
-            '' +            
- +
-**Schválení**: NE+
  
 **Řešení**: **Řešení**:
  
-Program je napsán v programovacím jazyku C#.+Program je napsán v programovacím jazyku C#.  
 +Program pracuje tak, že před startem odposlouchávání se nastaví IP adresa a port na rozhraní, které chceme odposlouchávat. 
 +Poté se vytvoří socket a začne odposlouchávat. Když přijme paket, zavolá se asynchroně metoda OnReceive, která tento paket  
 +zpracuje.
  
 +  mainSocket = new Socket(AddressFamily.InterNetwork,
 +                        SocketType.Raw, ProtocolType.IP);
 +
 +  mainSocket.Bind(new IPEndPoint(IPAddress.Parse(cmbInterfaces.Text), 0));
 +
 +  mainSocket.SetSocketOption(SocketOptionLevel.IP,
 +                        SocketOptionName.HeaderIncluded,
 +                        true);
 +
 +  mainSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);
 +
 +  mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
 +                        new AsyncCallback(OnReceive), null);
 +
 +
 +Zpracování paketu vypadá tak, že se nejdřív zjistí, jestli tento paket je TCP, poté jestli zdrojová IP adresa nebo cílová IP adresa
 +je ta, kterou jsme si nastavili, pak jestli zdrojový nebo cílový port je ten, který chceme. Když paket všemi těmito kontrolami projde,
 +tak se program podívá na příznak.Pokud je příznak PSH,ACK tak z paketu vyjme data a zkopíruje si je do bufferu. Takto plní pole dokud 
 +od stejného zdroje, který začal posílat data nedostane paket s příznakem FIN,ACK. Až takový paket dostane, tak do bufferu sehraje jestě 
 +data od tohoto paketu a pak tento buffer deserializuje na command, který poté zobrazí do příslušho místa v hlavním okně.
 +Program dále obsahuje třídy IPHeader a TCPHeader, které slouží pouze k tomu aby jsme paket (pole bytů), který nám přišel rozřezali na hlavičku 
 +a data a v hlavičce vyčetli typ paket, dále délku, flagy, TTL atd.
 +K programu je připojena dll knihovna, která byla použita u programu webcommunicator a slouží k tomu aby program věděl jak má deserializovat
 +command a co tento command má obsahovat. 
 +
 +Tady je screenshot jak vypadá program v provozu :
 +
 +{{:vyuka:cviceni:y36sps:semestralky:michao1.jpg| Screenshot}}
 +
 +Prezentace programu :
  
 {{:vyuka:cviceni:y36sps:semestralky:michao1.pdf| Prezentace}} {{:vyuka:cviceni:y36sps:semestralky:michao1.pdf| Prezentace}}
 +
 +Zdrojový kód ( Projekt ve visual studiu 2008 ) :
 +
 +{{:vyuka:cviceni:y36sps:semestralky:michao1.zip| Zdrojový kód}}
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  • vyuka/cviceni/y36sps/semestralky/michao1.1244277001.txt.gz
  • Last modified: 2009/06/06 08:30
  • by michao1