Introduction/Warmup Java Socket Programming Stream connecting processes running

Introduction/Warmup Java Socket Programming Stream connecting processes running

Introduction/Warmup Java Socket Programming Stream connecting processes running in different address spaces Can be 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. In Java this is lowest-level form of communication from application developers view Sockets represent a low-level abstraction for application communication.

Programmer is aware of a stream that connects two computers. Programmer fully responsible for managing and 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. One of the good things about Java Supported in the standard language (j2sdk) Distinction between high and low-level blurred somewhat by ability to wrap streams (e.g. ObjectOutputStream)

Still, socket programming differs from other distributed programming in its lowlevel nature. Shared resources (web servers, ftp servers, mail servers) Online auctions, exchanges, etc. Data locality

Localize computing power Crash protection Software maintainability 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. 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, each making requests of each other, rather than one making requests and the other serving up those requests. Will see many examples soon.

Good news: This is very simple in Java Really only 3 additional classes are needed 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 ips 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 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. 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. 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. 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 or reversi game 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, ...) 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 bandwidth overhead. 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 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. Synchronous: each agent waits for response after sending their message,

then does work handshaking. Aysnchronous (typical) work needs to be done after sending message. Doesnt know when reply will come, but single thread busy so cant process message. We will illustrate some of these concepts by creating the framework for a twoperson 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. 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. 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

Provides support for both synchronous and asynchronous messages. 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 using 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.

At this point well 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. 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 players acceptMove returns true public void moveAccepted(String from, String to, int mate); //called when other player quits public void conceded(); }

Recently Viewed Presentations

  • PSSA 2019 Test Coordinator Training Agenda  Sign-in and

    PSSA 2019 Test Coordinator Training Agenda Sign-in and

    Recommend Release Time. Office of Assessment's recommendations sent to principals. TCs of small schools (fewer than 400 tested students) generally need about 1-2 days to plan, 1-2 days to organize materials, full release on testing days for the entire time...
  • a corporate vision - Peter Sandman

    a corporate vision - Peter Sandman

    You don't have to batten down and wait for the storm to pass any more. Controversies can be predicted, then averted or minimized. Reputation management is part of normal "due diligence" activities. It can be statistically demonstrated that we predict...
  • Student Centered & Sustainable Methods for Education on

    Student Centered & Sustainable Methods for Education on

    VIVA Grant - Expired. Coordinator - not renewed. ... Whether it was making flyer for Paula to advertise an event on campus and passing them out." ... multiple answers will reflect that the subject matter includes multiple issues that can...
  • Global Strategy Formulation - Texas Tech University

    Global Strategy Formulation - Texas Tech University

    Global Strategy Formulation ... Example: Eli Lilly. To reduce cost, Lilly expanded their R&D efforts in India and china to include clinical tirals. ... For this, there is a link between growth and its effect on stock price and the...
  • Omeka Webpage: burger quest 2012

    Omeka Webpage: burger quest 2012

    OMEKA WEBPAGE: HAMBURGERS Kathleen Comeau Content & Collections This digital library chronicles a quest for the best hamburgers in New York City & beyond Each item will be collected using still digital photography The collections are based on a ranking...
  • Developing a Research Informed Pedagogy for ITE

    Developing a Research Informed Pedagogy for ITE

    Healey- Mick Healey took this and added 'research-tutored' Many teaching and learning activities may involve a mixture of the 4 approaches and a balance is sought over the 4 approaches over the longer period. These activities have been adapted to...
  • Central Nervous System and Epidermis

    Central Nervous System and Epidermis

    Central Nervous System and Epidermis Neurulation What are the major derivatives of the ectoderm? Neurulation What is the difference between primary and secondary neurulation? Primary Neurulation What are the major events of primary neurulation? Primary Neurulation What is involved in...
  • 2011 AVID PPT Format

    2011 AVID PPT Format

    Definition of a Persuasive Essay Persuasive Essays May make claims based on opinions May not take opposing ideas into account Persuades by appealing to the audience's emotion or by relying on the character or credentials of the writer Argumentative Essays...