You are on page 1of 19

CheapChat: a Java-based chat application

Nicolas Ducheneaut Mike Gebbie Barbara Rosario SIMS, Spring 2000

Chat application with Port Scanner


2 modules:
Port Scanner Chat application acting both as a server and a client

Port Scanner

Possible Ports:

(01023) (102449151) (49152-65535)

Port Scanner
findTheApplicationPort(Host Address,
Start Port, End Port ) Keep Trying

Possible Ports:

(01023) (102449151) (49152-45535)

Port Scanner
CheapChat Client CheapChat Server (Port 50005)

Port Scanner
CheapChat Client

Try 50000 Timeout

CheapChat Server (Port 50005)

Port Scanner
CheapChat Client PortScanner

Invoke!

CheapChat Server (Port 50005)

PS

Port Scanner
CheapChat Client PortScanner PortScanner Threads

Try 50001 Try 50002 Try 50003 Try 50004

CheapChat Server (Port 50005)

Port Scanner
CheapChat Client PortScanner PortScanner Threads

Connect at 50005

CheapChat Server (Port 50005)

Authenticate: Are you a CheapChat server?

Port Scanner
CheapChat Client PortScanner PortScanner Threads CheapChat Server (Port 50005)

Reply: I am a CheapChat server!

Port Scanner
CheapChat Client

Connect at 50005

CheapChat Server (Port 50005)

Chat 1: first to start Chat


Chat1

Client
Connect to Server Socket Sends strings to Server and receives Input Stream from the server; diplay it or (if special messages) do something else

Server
ACTIVE: Open Server Socket Wait for connection Create a ChatHandler object

ChatHandler
broadcast()
ChatHanler1 run()

Problems and potential remedies


Main weakness: clear-text administrative messages sent over the communication channel
> Solution: use two separate data streams instead

No way to know in advance if someone is on-line


> Solution: adapt the port scanner and use it before the application is launched

Thank you for your attention


Questions? Comments?

You might also like