CSPP51037 – Advanced Java Lesson 1 Introduction/Warmup Java Socket Programming.

Slides:



Advertisements
Similar presentations
Message Passing Vs Distributed Objects
Advertisements

Remote Method Invocation (RMI) Mixing RMI and sockets
COEN 445 Communication Networks and Protocols Lab 4
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 25 Networking.
Basic Socket Programming with Java. What is a socket?  Generally refers to a stream connecting processes running in different address spaces (across.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
1 Java Networking – Part I CS , Spring 2008/9.
WECPP1 Java networking Jim Briggs based on notes by Amanda Peart based on Bell & Parr's bonus chapter
1 L53 Networking (2). 2 OBJECTIVES In this chapter you will learn:  To understand Java networking with URLs, sockets and datagrams.  To implement Java.
CS3771 Today: network programming with sockets  Previous class: network structures, protocols  Next: network programming Sockets (low-level API) TODAY!
Internet Programming In Java. References Java.sun.com Java552 Many of the programs shown.
CSPP51037 – Advanced Java Lesson 1 Introduction/Warmup Java Socket Programming.
Client/Server In Java An Introduction to TCP/IP and Sockets.
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 1 Let’s get started. Let’s start by selecting an architecture from among.
Networking Support In Java Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 25 Networking.
13-Jul-15 Sockets and URLs. 2 Sockets A socket is a low-level software device for connecting two computers together Sockets can also be used to connect.
Lesson 3 Remote Method Invocation (RMI) Mixing RMI and sockets Rethinking out tic-tac-toe game.
Networking with Java CSc 335 Object-Oriented Programming and Design Spring 2009.
Networking java.net package, which provides support for networking. Its creators have called Java “programming for the Internet.” Socket :- A network socket.
CEG3185 Tutorial 4 Prepared by Zhenxia Zhang Revised by Jiying Zhao (2015w)
TCP Sockets Reliable Communication. TCP As mentioned before, TCP sits on top of other layers (IP, hardware) and implements Reliability In-order delivery.
Socket Programming -What is it ? -Why bother ?. Basic Interface for programming networks at transport level It is communication end point Used for inter.
An program As a simple example of socket programming we can implement a program that sends to a remote site As a simple example of socket.
Introduction/Warmup Java Socket Programming.  Stream connecting processes running in different address spaces  Can be across a network or on the same.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Practicum: - Client-Server Computing in Java Fundamental Data Structures and Algorithms Margaret Reid-Miller 13 April 2004.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Object Oriented Programming in Java Lecture 16. Networking in Java Concepts Technicalities in java.
Li Tak Sing COMPS311F. Case study: consumers and producers A fixed size buffer which can hold at most certain integers. A number of producers which generate.
© Lethbridge/Laganière 2005 Chap. 3: Basing Development on Reusable Technology The Client-Server Architecture A distributed system is a system in.
1 Chapter 28 Networking. 2 Objectives F To comprehend socket-based communication in Java (§28.2). F To understand client/server computing (§28.2). F To.
Introduction to Socket Programming in Android Jules White Bradley Dept. of Electrical and Computer Engineering Virginia Tech
Networks Sockets and Streams. TCP/IP in action server ports …65535 lower port numbers ( ) are reserved port echo7 time13 ftp20 telnet23.
CS390- Unix Programming Environment CS 390 Unix Programming Environment Java Socket Programming.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 43 Remote Method Invocation.
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
By Vivek Dimri. Basic Concepts on Networking IP Address – Protocol – Ports – The Client/Server Paradigm – Sockets The Java Networking Package – The InetAddress.
CSI 3125, Preliminaries, page 1 Networking. CSI 3125, Preliminaries, page 2 Networking A network represents interconnection of computers that is capable.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Prepared by Dr. Jiying Zhao University of Ottawa Canada.
UNIT-6. Basics of Networking TCP/IP Sockets Simple Client Server program Multiple clients Sending file from Server to Client Parallel search server.
Distributed Systems CS Project 1: File Storage and Access Kit (FileStack) Recitation 1, Aug 29, 2013 Dania Abed Rabbou and Mohammad Hammoud.
1 CSCD 330 Network Programming Fall 2013 Some Material in these slides from J.F Kurose and K.W. Ross All material copyright Lecture 8a Application.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 Java API for distributed computing.
Agenda Socket Programming The OSI reference Model The OSI protocol stack Sockets Ports Java classes for sockets Input stream and.
Network Programming. These days almost all devices.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 33 Networking.
The Echo Server Problem. Contents  Basic Networking Concepts  The Echo Server Problem.
Prepared by: Dr. Abdallah Mohamed, AOU-KW Unit9: Internet programming 1.
Object-Orientated Analysis, Design and Programming
Lecture 21 Sockets 1 (Not in D&D) Date.
Beyond HTTP Up to this point we have been dealing with software tools that run on browsers and communicate to a server that generates files that can be.
NETWORK PROGRAMMING CNET 441
An Introduction to TCP/IP and Sockets
PRESENTED To: Sir Abid………. PRESENTED BY: Insharah khan………. SUBJECT:
Network Programming Introduction
Sockets and URLs 17-Sep-18.
Clients and Servers 19-Nov-18.
Clients and Servers 1-Dec-18.
Networking.
Sockets and URLs 3-Dec-18.
Chapter 40 Remote Method Invocation
Chapter 46 Remote Method Invocation
Chapter 46 Remote Method Invocation
Clients and Servers 19-Jul-19.
CS18000: Problem Solving and Object-Oriented Programming
Clients and Servers 13-Sep-19.
Presentation transcript:

CSPP51037 – Advanced Java Lesson 1 Introduction/Warmup Java Socket Programming

Policies  Grade based on 3 large programming assignments + final | in-class quizzes.  You must write your own code for all assignments. The consequences for cheating are severe.  There will be a 3-day 10% penalty grace period for each assignment. After that, assignments will not be accepted.  Attendance is not required.  No auditors unless pre-approved!

Comments on course Topics  Will follow Volume 2 of Core Java fairly closely.  This includes many topics in distributed programming – socket programming, URL classes, RMI, servlets, web services, JMS  Other advanced java features – JDBC, graphics programming, advanced multithreading, JNI  Things not covered in depth – EJB, CORBA, JSP  It is assumed that you know Horstmann Volume I  Detailed web page maintained througout course

Java Socket Classes

What is a socket?  Generally refers to a stream connecting processes running in different address spaces (across a network or on the same machine).  We say “create a socket connection between machine A and machine B”. This means, roughly, create input and output streams for sending data between programs running simultaneously on each machine.  The programs can then “talk to each other”.  This is lowest-level form of communication from application developer’s view

Sockets, cont.  Sockets represent a low-level abstraction for application communication. –Programmer is aware of a stream that connects two computers. –Programmer fully responible for managing/interpreting flow of bytes between computers  Higher-level techniques –message passing systems (MPI, SOAP, JMS), extensions to web servers (ASP, JSP, servelets, etc), distributed objects (CORBA, RMI), web services, etc.

More about sockets in Java  One of the good things about Java  Supported natively by the standard languages (j2sdk)  Distinction between high and low-level blurred somewhat by ability to wrap streams (ObjectOutputStream, etc.)  Still, socket programming differs from other distributed programming in its low-level nature.

Why is this paradigm useful?  Shared resources (web servers, ftp servers, mail servers)  Online auctions, exchanges, etc.  Data locality  Localize computing power  Crash protection  Software maintainability

Conceptual overview of basic client-server program  Write a program that dials up another program at a specified IP address running on a specified port. Call this program the client.  Second program (server) accepts connection and establishes input/output stream to client.  When server accepts, client can establish input/ouput stream to server  Client makes request of server by sending data. Server sends replies to client. Protocol must be defined so client/server understand can interpret messages.

Conceptual overview of basic peer-to-peer program  Two processes running on specific port of specific machine.  Either process can dial up the other process.  When connection is established, applications talk at a peer level, rather than one making requests and the other serving up those requests.  Will see many examples soon.

Socket Machinery in Java

Java classes for direct socket programming  Good news: This is very simple in Java  Really only 3 additional classes are needed  java.net.InetAddress java.net.InetAddress  java.net.Socket java.net.Socket  java.net.ServerSocket java.net.ServerSocket

Most important classes/methods  java.net.Socket –Socket(InetAddress addr, int port); create a Socket connection to address addr on port port –InputStream getInputStream(); returns an instance of InputStream for getting info from the implicit Socket object –OutputStream getOutputStream(); returns an instance of OutputStream for sending info to implicit Socket object. –close(); close connection to implicit socket object, cleaning up resources.

Important classes, cont.  java.net.ServerSocket –ServerSocket(int port); enables program to listen for connections on port port –Socket accept(); blocks until connection is requested via Socket request from some other process. When connection is established, an instance of Socket is returned for establishing communication streams.

Important class, cont.  java.net.InetAddress –static InetAddress getByName(String name) given a hostname name, return the InetAddress object representing that name (basically encapsulates name and IP associated with name); –static InetAddress[] getAllByName(String name) same as above but for case where many ip’s mapped to single name (try e.g.). –static InetAddress getLocalHost() get InetAddress object associated with local host. –static InetAddress getByAddress(byte[] addr) get InetAddress object associated with address addr

Error Handling  Very important to ensure that server is robust and will not crash.  Important Exceptions: –InterruptedIOException –ConnectException  Be sure to close your sockets either after a crash or upon expected completion. Finally clause is useful here.

Examples  Best way to learn this is to study several canonical examples  See many simple course examples under standaloneClient package  Next, do simple EchoServer  Then, Threaded EchoServer  Then, fully synchronized tic-tac-toe  Then, chess game

Messages/Protocols

What is a message?  Technically, a structured piece of info sent from one agent to another.  Can be thought of as a set of commands with arguments that each agent understands and knows how to act upon.  Groupings of such commands are commonly referred to as a “protocol”.  HTTP, FTP, etc. are all protocols (get, put,...)

Why write our own message- passing system?  Existing protocols might be totally inappropriate for the needs of an application.  An existing protocol may work but be too inefficient (e.g. SOAP).  In general, can fine-tune the protocol exactly to your application to minimize memory and bandwitdth overhead.

What about distributed objects?  Can be overkill when communication needs are simple.  Can be inefficient when transaction throughput is critical.  Rapid implementation takes precedence of sophisitication/flexibility  special network protocols need to be avoided (behind a firewall, etc.)  CORBA, RMI, etc. not available

Architecting a Message Passing System  Crucial point: –Isolate communication details from application details. This is what we will discuss today. Your stand-alone objects should be well- defined and unaware of the message passing environment. –Provide a structured way to link messages to method calls on these objects.

Asynchronous vs. Synchronous Message Handling  Synchronous: each agent waits for response after sending their message, then does work – “handshaking”.  Aysnchronous (typical) – work needs to be done after sending message. Doesn’t know when reply will come, but single thread busy so can’t process message.

Simple Chess Framework  We will illustrate some of these concepts by creating the framework for a two-person game of chess.  I say “framework” because the entire class structure and all methods are in place. However, the implementations of the methods are left incomplete. The hard work has been done, though, and what remains is totally isolated and algorithmic.

Base classes  We start with two abstract base classes: public abstract class BasicMessage{ protected String id; //”command” protected Vector argList;//”arguments” //accessors/mutators go here public abstract boolean Do(); }  When a message is received by an agent, the Do method is called to perform the appropriate action. Individual messages that subclass BasicMessage must implement this method.

BasicMsgHandler  Some comments on the BasicMsgHandler: –Stores the input and output streams for reading and writing, wherever these come from. –readMsg “marshals” raw data and builds BasicMessage object – uses buildMessage(). –sendMsg “unmarshals” BasicMessage object and sends raw data tokens to stream. –run reads a message and processes (Do method) when something is in the input stream.

Base Classes, cont.  The second is a basic handler with support for both synchronous and asynchronous messages: public abstract class BasicMsgHandler implements Runnable{ InputStream in; OutputStream out; //constructors, accessor/mutators public BasicMessage readMsg() throws IOException; public void send Msg(BasicMessage) throws IOException; public void run(){} //calls readMsg continuously and processes protected abstract BasicMessage buildMessage(String) ; //creates object

BasicMsgHandler  Contains functionality to do the following: –marshal and unmarshal message tokens to/from BasicMessage objects. –read a message synchronously –send a message –read messages asychronously and call Do method to perform action associated with message.

Source code links  BasicMessage.java BasicMessage.java  BasicMsgHandler.java BasicMsgHandler.java

Creating the local objects  At this point we’ll step aside from the networking aspect and create the local, standalone ChessPlayer class.  The important point is that this class should have no knowledge that it will live in a networked environment. This division of labor greatly facilitates code maintenance, testing, and reuse.

ChessPlayer class public class ChessPlayer{ //constructors //gets the next move (by reference) public boolean nextMove(String from, String to, int mate); //called as attempt by other player to move. accept or reject public boolean acceptMove(String from, String to, int mate); //called after other player’s acceptMove returns true public void moveAccepted(String from, String to, int mate); //called when other player quits public void conceded(); }