Java Socket Programming and Java RMI CS 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 through 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 1.Socket client = new Socket(server, port_id); 2.DIS/DOS Same as in server 3.Read/Write Same as in server 4.Close Same as in server 1.ServerSocket server = new ServerSocket( PORT ); 2.Socket client = server.accept(); 3.DataInputStream is = new DataInputStream(client.getInputStream()); 4.DataOutputStream os = new DataOutputStream(client.getOutputStream()); 5.String line = is.readLine(); 6.os.writeBytes(“Hello\n”); 7.client.close();
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