The Knock Knock Protocol

1,310 views 19 slides Dec 02, 2015
Slide 1
Slide 1 of 19
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19

About This Presentation

A simple client-server application in java in which a client sends a message to a server and the server tries to be funny by sending back a funny response.


Slide Content

Introduction
THEKNOCKKNOCKPROTOCOL
Muhammad Adil Raja
Roaming Researchers,R.

December 2, 2015
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
OUTLINE
1INTRODUCTION2THECLIENT3THESERVER
4THEKNOCKKNOCKPROTOCOL
5REFERENCES
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
OUTLINE
1INTRODUCTION2THECLIENT3THESERVER4THEKNOCKKNOCKPROTOCOL
5REFERENCES
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
OUTLINE
1INTRODUCTION2THECLIENT3THESERVER4THEKNOCKKNOCKPROTOCOL5REFERENCES
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
OUTLINE
1INTRODUCTION2THECLIENT3THESERVER4THEKNOCKKNOCKPROTOCOL5REFERENCES
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
OUTLINE
1INTRODUCTION2THECLIENT3THESERVER4THEKNOCKKNOCKPROTOCOL5REFERENCES
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
INTRODUCTION
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THECLIENTI
/
C o p y r i g h t ( c ) 1995 , 2013 , O r a c l e and / o r i t s a f f i l i a t e s . A l l r i g h t s r e s e r v e d .

R e d i s t r i b u t i o n and use i n s o u r c e and b i n a r y forms , w i t h o r w i t h o u t
m o d i f i c a t i o n , a r e p e r m i t t e d p r o v i d e d t h a t t h e f o l l o w i n g c o n d i t i o n s
a r e met :

R e d i s t r i b u t i o n s o f s o u r c e code must r e t a i n t h e above c o p y r i g h t
n o t i c e , t h i s l i s t o f c o n d i t i o n s and t h e f o l l o w i n g d i s c l a i m e r .

R e d i s t r i b u t i o n s i n b i n a r y f o r m must r e p r o d u c e t h e above c o p y r i g h t
n o t i c e , t h i s l i s t o f c o n d i t i o n s and t h e f o l l o w i n g d i s c l a i m e r i n t h e
d o c u m e n t a t i o n and / o r o t h e r m a t e r i a l s p r o v i d e d w i t h t h e d i s t r i b u t i o n .

N e i t h e r t h e name o f O r a c l e o r t h e names o f i t s
c o n t r i b u t o r s may be used t o endorse o r promote p r o d u c t s d e r i v e d
f r o m t h i s s o f t w a r e w i t h o u t s p e c i f i c p r i o r w r i t t e n p e r m i s s i o n .

THIS SOFTWARE I S PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
I S " AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING , BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE, DATA, OR
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THECLIENTII
PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
L I A B I L I T Y , WHETHER IN CONTRACT, STRICT L I A B I L I T Y , OR TORT ( INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN I F ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/
importj a v a . i o .;
importj a v a . n e t .;
p u b l i c c l a s sK n o c k K n o c k C l i e n t {
p u b l i c s t a t i c voidmain ( S t r i n g [ ] a r g s )throwsI O E x c e p t i o n {
i f( a r g s . l e n g t h ! = 2 ) {
System . e r r . p r i n t l n (
" Usage :j a v aE c h o C l i e n t< h o s tname>< p o r tnumber> " ) ;
System . e x i t ( 1 ) ;
}
S t r i n g hostName = a r g s [ 0 ] ;
i n tportNumber = I n t e g e r . p a r s e I n t ( a r g s [ 1 ] ) ;
t r y(
S o c k e t k k S o c k e t =newS o c k e t ( hostName , portNumber ) ;
P r i n t W r i t e r o u t =newP r i n t W r i t e r ( k k S o c k e t . g e t O u t p u t S t r e a m ( ) ,t r u e) ;
B u f f e r e d R e a d e r i n =newB u f f e r e d R e a d e r (
newI n p u t S t r e a m R e a d e r ( k k S o c k e t . g e t I n p u t S t r e a m ( ) ) ) ;
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THECLIENTIII
) {
B u f f e r e d R e a d e r s t d I n =
newB u f f e r e d R e a d e r (newI n p u t S t r e a m R e a d e r ( System . i n ) ) ;
S t r i n g f r o m S e r v e r ;
S t r i n g f r o m U s e r ;
w h i l e( ( f r o m S e r v e r = i n . r e a d L i n e ( ) ) ! =n u l l) {
System . o u t . p r i n t l n ( " S e r v e r :" + f r o m S e r v e r ) ;
i f( f r o m S e r v e r . e q u a l s ( " Bye . " ) )
break;
f r o m U s e r = s t d I n . r e a d L i n e ( ) ;
i f( f r o m U s e r ! =n u l l) {
System . o u t . p r i n t l n ( " C l i e n t :" + f r o m U s e r ) ;
o u t . p r i n t l n ( f r o m U s e r ) ;
}
}
}catch( UnknownHostException e ) {
System . e r r . p r i n t l n ( " Don ' tknowa b o u th o s t" + hostName ) ;
System . e x i t ( 1 ) ;
}catch( I O E x c e p t i o n e ) {
System . e r r . p r i n t l n ( " Couldn ' tg e tI /Of o rt h ec o n n e c t i o nt o" +
hostName ) ;
System . e x i t ( 1 ) ;
}
}
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THECLIENTIV
}
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THESERVERI
/
C o p y r i g h t ( c ) 1995 , 2014 , O r a c l e and / o r i t s a f f i l i a t e s . A l l r i g h t s r e s e r v e d .

R e d i s t r i b u t i o n and use i n s o u r c e and b i n a r y forms , w i t h o r w i t h o u t
m o d i f i c a t i o n , a r e p e r m i t t e d p r o v i d e d t h a t t h e f o l l o w i n g c o n d i t i o n s
a r e met :

R e d i s t r i b u t i o n s o f s o u r c e code must r e t a i n t h e above c o p y r i g h t
n o t i c e , t h i s l i s t o f c o n d i t i o n s and t h e f o l l o w i n g d i s c l a i m e r .

R e d i s t r i b u t i o n s i n b i n a r y f o r m must r e p r o d u c e t h e above c o p y r i g h t
n o t i c e , t h i s l i s t o f c o n d i t i o n s and t h e f o l l o w i n g d i s c l a i m e r i n t h e
d o c u m e n t a t i o n and / o r o t h e r m a t e r i a l s p r o v i d e d w i t h t h e d i s t r i b u t i o n .

N e i t h e r t h e name o f O r a c l e o r t h e names o f i t s
c o n t r i b u t o r s may be used t o endorse o r promote p r o d u c t s d e r i v e d
f r o m t h i s s o f t w a r e w i t h o u t s p e c i f i c p r i o r w r i t t e n p e r m i s s i o n .

THIS SOFTWARE I S PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
I S " AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING , BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE, DATA, OR
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THESERVERII
PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
L I A B I L I T Y , WHETHER IN CONTRACT, STRICT L I A B I L I T Y , OR TORT ( INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN I F ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/
importj a v a . n e t .;
importj a v a . i o .;
p u b l i c c l a s sKnockKnockServer {
p u b l i c s t a t i c voidmain ( S t r i n g [ ] a r g s )throwsI O E x c e p t i o n {
i f( a r g s . l e n g t h ! = 1 ) {
System . e r r . p r i n t l n ( " Usage :j a v aKnockKnockServer < p o r tnumber> " ) ;
System . e x i t ( 1 ) ;
}
i n tportNumber = I n t e g e r . p a r s e I n t ( a r g s [ 0 ] ) ;
t r y(
S e r v e r S o c k e t s e r v e r S o c k e t =newS e r v e r S o c k e t ( portNumber ) ;
S o c k e t c l i e n t S o c k e t = s e r v e r S o c k e t . a c c e p t ( ) ;
P r i n t W r i t e r o u t =
newP r i n t W r i t e r ( c l i e n t S o c k e t . g e t O u t p u t S t r e a m ( ) ,t r u e) ;
B u f f e r e d R e a d e r i n =newB u f f e r e d R e a d e r (
newI n p u t S t r e a m R e a d e r ( c l i e n t S o c k e t . g e t I n p u t S t r e a m ( ) ) ) ;
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THESERVERIII
) {
S t r i n g i n p u t L i n e , o u t p u t L i n e ;
/ / I n i t i a t e c o n v e r s a t i o n w i t h c l i e n t
K n o c k K n o c k P r o t o c o l kkp =newK n o c k K n o c k P r o t o c o l ( ) ;
o u t p u t L i n e = kkp . p r o c e s s I n p u t (n u l l) ;
o u t . p r i n t l n ( o u t p u t L i n e ) ;
w h i l e( ( i n p u t L i n e = i n . r e a d L i n e ( ) ) ! =n u l l) {
o u t p u t L i n e = kkp . p r o c e s s I n p u t ( i n p u t L i n e ) ;
o u t . p r i n t l n ( o u t p u t L i n e ) ;
i f( o u t p u t L i n e . e q u a l s ( " Bye . " ) )
break;
}
}catch( I O E x c e p t i o n e ) {
System . o u t . p r i n t l n ( " E x c e p t i o nc a u g h twhent r y i n gt ol i s t e nonp o r t"
+ portNumber + " o rl i s t e n i n gf o rac o n n e c t i o n " ) ;
System . o u t . p r i n t l n ( e . getMessage ( ) ) ;
}
}
}
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THEKNOCKKNOCKPROTOCOLI
/
C o p y r i g h t ( c ) 1995 , 2008 , O r a c l e and / o r i t s a f f i l i a t e s . A l l r i g h t s r e s e r v e d .

R e d i s t r i b u t i o n and use i n s o u r c e and b i n a r y forms , w i t h o r w i t h o u t
m o d i f i c a t i o n , a r e p e r m i t t e d p r o v i d e d t h a t t h e f o l l o w i n g c o n d i t i o n s
a r e met :

R e d i s t r i b u t i o n s o f s o u r c e code must r e t a i n t h e above c o p y r i g h t
n o t i c e , t h i s l i s t o f c o n d i t i o n s and t h e f o l l o w i n g d i s c l a i m e r .

R e d i s t r i b u t i o n s i n b i n a r y f o r m must r e p r o d u c e t h e above c o p y r i g h t
n o t i c e , t h i s l i s t o f c o n d i t i o n s and t h e f o l l o w i n g d i s c l a i m e r i n t h e
d o c u m e n t a t i o n and / o r o t h e r m a t e r i a l s p r o v i d e d w i t h t h e d i s t r i b u t i o n .

N e i t h e r t h e name o f O r a c l e o r t h e names o f i t s
c o n t r i b u t o r s may be used t o endorse o r promote p r o d u c t s d e r i v e d
f r o m t h i s s o f t w a r e w i t h o u t s p e c i f i c p r i o r w r i t t e n p e r m i s s i o n .

THIS SOFTWARE I S PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
I S " AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING , BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE, DATA, OR
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THEKNOCKKNOCKPROTOCOLII
PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
L I A B I L I T Y , WHETHER IN CONTRACT, STRICT L I A B I L I T Y , OR TORT ( INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN I F ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/
importj a v a . n e t .;
importj a v a . i o .;
p u b l i c c l a s sK n o c k K n o c k P r o t o c o l {
p r i v a t e s t a t i c f i n a l i n tWAITING = 0 ;
p r i v a t e s t a t i c f i n a l i n tSENTKNOCKKNOCK = 1 ;
p r i v a t e s t a t i c f i n a l i n tSENTCLUE = 2 ;
p r i v a t e s t a t i c f i n a l i n tANOTHER = 3 ;
p r i v a t e s t a t i c f i n a l i n tNUMJOKES = 5 ;
p r i v a t e i n ts t a t e = WAITING ;
p r i v a t e i n tc u r r e n t J o k e = 0 ;
p r i v a t eS t r i n g [ ] c l u e s = { " T u r n i p " , " L i t t l eOldLady " , " A t c h " , "Who" , "Who" } ;
p r i v a t eS t r i n g [ ] answers = { " T u r n i pt h eh e a t ,i t ' sc o l di nh e r e ! " ,
" Id i d n ' tknowyouc o u l dy o d e l ! " ,
" B l e s syou ! " ,
" I st h e r eano w li nh e r e ? " ,
" I st h e r eanechoi nh e r e ? " } ;
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THEKNOCKKNOCKPROTOCOLIII
p u b l i cS t r i n g p r o c e s s I n p u t ( S t r i n g t h e I n p u t ) {
S t r i n g t h e O u t p u t =n u l l;
i f( s t a t e == WAITING ) {
t h e O u t p u t = " Knock !Knock ! " ;
s t a t e = SENTKNOCKKNOCK;
}e l s e i f( s t a t e == SENTKNOCKKNOCK) {
i f( t h e I n p u t . e q u a l s I g n o r e C a s e ( "Who ' st h e r e ? " ) ) {
t h e O u t p u t = c l u e s [ c u r r e n t J o k e ] ;
s t a t e = SENTCLUE ;
}e l s e{
t h e O u t p u t = " You ' r esupposedt osay\ " Who ' st h e r e ? \ " !" +
" T r ya g a i n .Knock !Knock ! " ;
}
}e l s e i f( s t a t e == SENTCLUE) {
i f( t h e I n p u t . e q u a l s I g n o r e C a s e ( c l u e s [ c u r r e n t J o k e ] + "who? " ) ) {
t h e O u t p u t = answers [ c u r r e n t J o k e ] + "Wanta n o t h e r ?( y / n ) " ;
s t a t e = ANOTHER ;
}e l s e{
t h e O u t p u t = " You ' r esupposedt osay\ " " +
c l u e s [ c u r r e n t J o k e ] +
"who ? \ " " +
" !T r ya g a i n .Knock !Knock ! " ;
s t a t e = SENTKNOCKKNOCK;
}
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
THEKNOCKKNOCKPROTOCOLIV
}e l s e i f( s t a t e == ANOTHER) {
i f( t h e I n p u t . e q u a l s I g n o r e C a s e ( " y " ) ) {
t h e O u t p u t = " Knock !Knock ! " ;
i f( c u r r e n t J o k e == (NUMJOKES1 ) )
c u r r e n t J o k e = 0 ;
e l s e
c u r r e n t J o k e + + ;
s t a t e = SENTKNOCKKNOCK;
}e l s e{
t h e O u t p u t = " Bye . " ;
s t a t e = WAITING ;
}
}
r e t u r nt h e O u t p u t ;
}
}
Muhammad Adil Raja R.
The Knock Knock Protocol

Introduction
REFERENCES
The source code has been taken from
here.
This presentation has been produced with L
AT
E
X.
Berlin,beetle.
Muhammad Adil Raja R.
The Knock Knock Protocol