160 likes | 180 Views
Java Socket Programming and Java RMI CS 15-440. Recitation 1, Sep 8, 2011 Majd F. Sakr, Vinay Kolar, Mohammad Hammoud. Today…. Announcements All programs run on Unix cluster Use any editor/file-transfer you want Project 1 Java Socket Programming Java RMI. Project 1. Learning objective:
E N D
Java Socket Programming and Java RMICS 15-440 Recitation 1, Sep 8, 2011 Majd F. Sakr, Vinay Kolar, Mohammad Hammoud
Today… • Announcements • All programs run on Unix cluster • Use any editor/file-transfer you want • Project 1 • Java Socket Programming • Java RMI
Project 1 • Learning objective: • Apply the knowledge of Process and Communication and Naming to design a Distributed File System. • Duration: 3 weeks • Solo project
Project Objectives • Design a Distributed File System called File Stack using RMIs • Functions provided: • Create/Read/Write files and directories • Meta-operations: list files, size
Components • Storage Servers: • Stores Files • Naming Server: • Maps a file to storage server • Clients: • Contact Naming to get storage server • Carry out file operation on storage server
Design • Storage Server Registration • Storage Servers register to Naming on boot • Client functions • Contact naming to get a file-handle to access a file • Perform file operation • All functionalities through RMI • Stubs/Skeletons • Serialization
Design/Implementation hints • Remote Method Invocation (RMI) heavy • We have an excellent start-up code • Read “Design guidelines” and “Implementation hints” • Come back to us • Earlier the better
Java Socket Programming • Sockets: • An API for using underlying networks • An abstraction like “File” • Request-response
Java Socket Programming • IP Address • To name a machine/host • Port • Port maps to one connection-end-point • For your apps: Use ports 49152 through 65535 • Types of Sockets • UDP (Datagram) vs TCP (Conn-oriented)
java.net class • A package that provide base classes and API for Socket programming • Open/close socket • Accept • Read/Write • Send/Receive
TCP Sockets • Classes • java.net.ServerSocket, java.net.Socket • DataInputStream, DataOutputStream
TCP Socket • Server • Client ServerSocket server = new ServerSocket( PORT ); Socket client = server.accept(); DataInputStream is = new DataInputStream(client.getInputStream()); DataOutputStreamos = new DataOutputStream(client.getOutputStream()); String line = is.readLine(); os.writeBytes(“Hello\n”); client.close(); Socket client = new Socket(server, port_id); DIS/DOS Same as in server Read/Write Same as in server Close Same as in server
Exercise • Write a simple chat server and client using TCP Sockets (Estimated time: 20 mins) • Step 1: • Client connects to server. Sends a message • Server sends back all the message that it has received from all clients • Step 2: • One client should not block the server
Java RMI • What is RMI? • What do we need • Where is the server? • Which object/method should I call? • What if I do not know the server object definition? • How to communicate?
Java RMI • How do we implement? • Look-up for server/object • RMI Registry • Remote interface • Extend Remote interface • Throw RemoteException • Make it accessible • How does the magic happen? • Stub/Skeleton, Serialize
References • http://www.buyya.com/java/Chapter13.pdf • http://www.generalsoftwares.co.uk/remote-services.html