CS51 - Spring 2010 - Lecture 25
- if you're a senior and I haven't talked to you, let me know ASAP
- last CS lunch of the semester on Thursday at noon in Frank West
sending/receiving data externally
- What type of data am I sending?
- use Readers and Writers
- built-in types
- use DataInputStream/DataOutputStream
- objects and or a mixtures of types
- use ObjectInputStream/ObjectOutputStream
- Buffered or unbuffered?
- Unbuffered data sends immediately
- Buffered data queues it up and then sends it in larger chunks
- Often we'll want to buffer our data, but sometimes immediate action is necessary
- For reader/writers
- For streams
- only need client/server relationship to know who should contact who
- how does this work for most IM clients?
what needs in happen in IM program?
- establish a connection (should look similar to DrawingPanelNetwork)
- from these we get a socket (multidirectional)
- both the client and the server now should do the same thing
- get reader/writers for both input and output
- if we have text to write, send it out
- if we receive text, display it
- what type of I/O classes should we use (Streams or Reader/Writer)?
- what are the actions?
- notice that we use the same class for both the server and the client
- when the user enters text, we set the text for the message handler
- again, random port
- after establishing a connection, they do the same thing
- use BufferedReader and PrintWriter because we're dealing with Strings/characters
- also give us the ability to send a line at a time
- use InputStreamReader to go from a stream to a reader
- ready() returns true if there is data to read, false otherwise
- see if we have text to send, if so, send it
- just keep looping
Look at the mystery method in Mystery class
- what does it do?
- getWebPage method
- creates a new URL object
- URL = uniform resource locator
- read the data using a BufferedReader
- new String(buildpage), could also have used builldpage.toString()
- throws MalformedURLException
- does the same thing, but we've implemented the interaction in the HTTPConnection class
- notice it call getHost() on the url, then calls getPage
- what is the difference between a host and a page?
- why does this version of the URL constructor have two parameters?
show HTTPConnection class in
- uses sockets
- we're the client
- open a socket to the host at port 80
- port 80 is the standard port for http, which is for web data
- need to open both input and output streams, why?
- true specifies autoflush, i.e. println() flushes the buffer
- we have a connection to the server, but need to tell it what we want
- "GET pagename" tells the server we want the html for pagename
- web servers automatically disconnect after sending data. Why do you think this is?
- telnet is a command line program with similar functionality to HTTPConnection
- "telnet <host_name> <port>" will open a connection
- standard web server port is 80
- "telnet www.google.edu 80"
- to fetch a web page once you have a connection open:
GET <page_name> HTTP/1.1
- a common page is "/index.html"