1 / 24

Java networking

Java networking. Jim Briggs based on notes by Amanda Peart based on Bell & Parr's bonus chapter http://www.shu.ac.uk/java/networkprogramming/starthere.html. Aims. To understand Java networking To appreciate socket programming Define the client socket How to use sockets

Download Presentation

Java networking

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java networking Jim Briggs based on notes by Amanda Peart based on Bell & Parr's bonus chapter http://www.shu.ac.uk/java/networkprogramming/starthere.html WECPP

  2. Aims • To understand Java networking • To appreciate socket programming • Define the client socket • How to use sockets • Overview of server sockets WECPP

  3. Review Internet basics • TCP/IP protocol (contra UDP/IP) • ensures reliable transmission of data • IP address • identifies Internet host (strictly interface) • Domain name • user-friendly way of identifying hosts • DNS maps names to IP addresses (and vice-versa) • Port • identifies particular service on a host (e.g. HTTP = 80) WECPP

  4. Sockets • Sockets • abstract input-output devices • could apply to any sort of device, but most often referred to in the context of networking: • software mechanism for one program to talk to another • Two-way connection between two programs • full-duplex link • more than one socket can be associated with a port WECPP

  5. Client and server sockets • Client socket and server socket need to be programmed in different ways • Client socket assumes the server is ready to accept connections • Server needs to listen for connection requests WECPP

  6. How is a socket used? • A new socket is created by a program • The socket attempts to connect to a remote host • Once the connection has been established, the local machine and the remote machine send and receive data • When the transmission is complete, one or both machines closes the connection WECPP

  7. Socket Programming • Java uses ‘class Sockets’ to interface to TCP sockets (import java.net.*) • The constructor method for the class: • creates a TCP socket • allows the user to specify a host and port • attempts to connect to the host Socket connection = new Socket("www.port.ac.uk", 80); Socket connection = new Socket(InetAddress, port); WECPP

  8. When connection is established... • The client host port is chosen by the system at run time • The client port number can be accessed using:connection.getLocalPort() • A socket is closed when: • The socket is garbage collected • The program ends • The program explicitly closes it:connection.close() WECPP

  9. Errors and exceptions • ConnectException • The connection is refused by the remote host. • Host could be busy or there might be no server on the port • NoRouteToHostException • The connection has timed out. WECPP

  10. Input with sockets • For input it is most convenient to create a BufferedReader (java.io) as follows: BufferedReader in = new BufferedReader (new InputStreamReader(socket.getInputStream())); • This enables readLine to be used for string input. Data ends when null is returned. Example: String line; while ((line = in.readLine()) != null) { processLine(); } WECPP

  11. Output with sockets • For output to a stream it is convenient to create a PrintWriter (java.io) object as follows: PrintWriter out = new PrintWriter(socket.getOutputStream(), true); • Use method println to output a line. out.println("string"); • Closing a socket closes all of the associated streams. WECPP

  12. Socket crashes • When a program reads from a socket, the call on read blocks (waits) until the data has been obtained • But if the remote host crashes, the program is left hanging • An alternative is to call setSoTimeout(timeout) • Sets the maximum waiting time (in milliseconds) • When the time expires, an InterruptedException is thrown WECPP

  13. Port scanner example • A port scanner is a program that hunts for working ports on an Internet host • Warning: can be impolite • PortScanner.java • Checks for unknown host • Attempts to connect to ports 1 to 256 of specified host • Ignores ports where no socket can be established WECPP

  14. Get server time example • Connect to server's port 13 • Read a line of text (containing time and date) • GetRemoteTime.java • Of course it cannot connect if no service is running WECPP

  15. Class Sockets WECPP

  16. Class Sockets WECPP

  17. Class Sockets WECPP

  18. Class Sockets WECPP

  19. Socket: Implemented by class socket A socket object is a connection to a certain host on a particular port Socket objects are used for data transfer A Socket object initiates a connection Server socket: Implemented by class ServerSocket A SocketServer object just waits on a particular port for incoming connections from anywhere A ServerSocket object waits for connections Sockets and Server Sockets WECPP

  20. The algorithm for a server 1 • Create ServerSocket object on a particular port ServerSocket server = new ServerSocket(12345, 100); • ServerSocket object listens for any connection attempts Socket connection = server.accept(); • The server is blocked (waits) until a client attempts to connect • When a client attempts to connect, the server wakes up WECPP

  21. The algorithm for a server 2 • When a client connects, method accept returns a new Socket object representing the connection between the server and the client • That socket object's getInputStream and/or getOutputStream methods are called to obtain streams which can be used to send/receive data • The server and the client interact using streams according to an agreed protocol • When finished, the server, the client, or both close the connection WECPP

  22. Daytime server example • DaytimeServer.java • Listens on port 13 • When a connection is accepted it uses the socket's output stream to write the current date and time • Then closes the socket and listens for a new connection (forever) WECPP

  23. More complex servers • A server dealing with one connection cannot respond to further connections • Normally, connection requests are queued • May be better to create a new thread to deal with each connection • Allows main thread to keep listening for new connections WECPP

  24. Reading • Bell and Parr - bonus chapter http://www.shu.ac.uk/java/networkprogramming/starthere.html • Deitel, chapter 18 WECPP

More Related