0% found this document useful (0 votes)
64 views14 pages

Basic Socket Programming With Java

This document provides an overview of basic socket programming in Java. It defines a socket as a stream connecting processes across a network or on the same machine. Sockets represent the lowest-level form of application communication where the programmer is responsible for managing byte-level data flow. The key Java classes for socket programming are InetAddress, Socket, and ServerSocket. Examples demonstrate how to create client-server and peer-to-peer socket connections in Java.

Uploaded by

basant
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views14 pages

Basic Socket Programming With Java

This document provides an overview of basic socket programming in Java. It defines a socket as a stream connecting processes across a network or on the same machine. Sockets represent the lowest-level form of application communication where the programmer is responsible for managing byte-level data flow. The key Java classes for socket programming are InetAddress, Socket, and ServerSocket. Examples demonstrate how to create client-server and peer-to-peer socket connections in Java.

Uploaded by

basant
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

Basic Socket Programming

with Java

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 developers 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.Socket
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 ips mapped to single
name (try www.microsoft.com, 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

You might also like