background image

Mateusz Grauman, grupa 3, 137290                                                                                              22.04.2013                                                                                                                           

 

Rozwój aplikacji internetowych w medycynie 

 

Zadanie numer 1 

Programy typu klient-serwer  

 
1.  Kody źródłowe programów: 
 
- klienta( w języku C#) 

using

 System; 

using

 System.Net; 

using

 System.Collections.Generic; 

using

 System.Net.Sockets; 

using

 System.Text; 

using

 System.IO; 

 

//klient c#

 

namespace

 ZegarNet 


    

class

 

Klient_cs

 

    { 
        

public

 

static

 

void

 Main(

string

[] args) 

        { 
            

Console

.WriteLine(

"Podaj komende"

); 

            

string

 host = 

"localhost"

            

int

 port = 1117;

//numer portu

 

            

byte

[] bufor; 

            

string

 slowo = 

Console

.ReadLine();

//wpisanie słowa jako żądanie

 

            

string

 haslo=

"GET /HTTP/1.1"

;

//wpisać, by wysłać żądanie

 

            

if

(slowo == haslo)

//jeśli hasło żądania się zgadza

 

            { 
                

try

 

                { 
                    

TcpClient

 socket = 

new

 

TcpClient

(host, port); 

                    

NetworkStream

 netStream = socket.GetStream(); 

                    bufor = 

new

 

byte

[socket.ReceiveBufferSize]; 

                    

int

 iLength = netStream.Read(bufor, 0, socket.ReceiveBufferSize); 

                    

String

 odpowiedz = 

Encoding

.ASCII.GetString(bufor); 

                    

Console

.WriteLine(

"\nOdpowiedz {0} to: "

, host); 

                    

//wypisanie do konsoli to, co klient otrzymał od serwera

 

                    

Console

.WriteLine(

"\n{0}"

, odpowiedz.Substring(0, iLength)); 

                } 
                

catch

 

                { 
                    

Console

.WriteLine(

"Pojawil sie wyjatek! "

); 

                } 
            } 
            

else

 

            { 
                

Console

.WriteLine(

"Zla komenda"

); 

            } 
            

Console

.Read();

//odczytanie danych

 

        } 
    } 

 
 

background image

- serwera( w języku Java) 
 
package moje; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.net.SocketException; 
import java.net.URL; 
import java.util.Date; 
/** 
 * 
 * @author mateusz 
 */ 
class Watek extends Thread{ 
    BufferedReader strumienWejscia; 
    PrintStream strumienWyjscia; 
    String echo; 
    Socket gniazdo; 
    String host = "localhost";        
     
    public Watek(Socket gniazdo){ 
        this.gniazdo=gniazdo; 
    } 
     
    @Override 
    public void run(){ 
        try{ 
            strumienWejscia = new BufferedReader(new InputStreamReader(gniazdo.getInputStream())); 
            strumienWyjscia = new PrintStream(gniazdo.getOutputStream()); 
            URL url = new URL("file:///C:/Users/Mateusz/Desktop/index.html");//źródło mojej strony 
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); 
            String dane; 
            //dane wysyłane do klienta 
            while((dane=reader.readLine())!= null){ 
                strumienWyjscia.print(dane + "\nData: "+(new Date()).toString()+ "  \nport: "  + 
gniazdo.getPort()+ "  \nIP: " + gniazdo.getLocalAddress() + "  \nURL: " + url);   
            } 
            reader.close(); 
 
            while((echo=strumienWejscia.readLine())!=null ){ 
                System.out.print(echo); 
            } 
        }catch(Exception e){ 
            e.printStackTrace(); 
        } 
    }//run 
} //class 
 
public class MojProgram { 
    public static void main(String[] args){ 
        ServerSocket serwer; 

background image

        Socket gniazdo; 
        Watek w; 
        int i=0; 
            try { 
                serwer = new ServerSocket(1117); 
                while(true){ 
                        try{ 
                            System.out.println("Czekam na polaczenie"); 
                            gniazdo = serwer.accept(); 
                            System.out.println("Polaczenie przyszlo: " + (new Date()).toString());     
                            //semafor ograniczający dostęp klientów do serwera 
                            if(i<5){ 
                                w = new Watek(gniazdo); 
                                w.start(); 
                                i++; 
                            } 
                            if(i >= 5){ 
                                System.out.println("Brak wolnych portow, prosze poczekac"); 
                                break; 
                            } 
                        }catch(SocketException e){ 
                            System.out.println("Zerwano polaczenie" + e);//przy zerwaniu połączenia 
                            i--; 
                        }catch(IOException e){ 
                            System.err.println(e); 
                        }   
                }//while 
            }catch(IOException e){ 
                System.err.println(e); 
            } 
    }//main 
}//class 
 
-kod źródłowy mojej strony( HTML) 
 
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> 
<head> 
 

<title>Przyklad dokumentu zgodnego z XHTML 1.1</title> 

</head> 
<body> 
 

<div>To jest przyklad strony.</div> 

 

<div>Mateusz Grauman gr3. 137290</div> 

</body> 
</html> 
 
 
 
 
 
 
 
 

background image

2. Zrzuty z ekranu moich programów 
 
 
Obrazek nr 1. Start serwera . 
 

 

 
Obrazek nr 2. Start klienta. 
 

 

 
Należy podać mu komendę: GET /HTTP/1.1 żeby wysłać żądanie. 
  

background image

 
Obrazek nr 3. Obsługa klienta. 
 

 

 
Obrazek nr 4. Stan serwera po obsłudze klienta. 
 

 

 
 
 
 
 
 
 

background image

 
Obrazek nr 5. Pojawienie się komunikatu gdy serwer obsługuje więcej niż 5 klientów w tym samym 
czasie. 
 

 

 
Obrazek nr 6. Pojawienie się komunikatu gdy klient wpisze złą komendę.