Socket
Programming using TCP Socket
Socket:
Sockets
allow communication between two different processes on the same or different
machines. A Unix Socket is used in a client-server application framework. A
server is a process that performs some functions on request from a client. The client in socket programming must know two information:
- IP
Address of Server, and
- Port
number.
Server Side Programming in Java:
|
Method
|
Description
|
|
|
1) public Socket accept()
|
returns the socket and
establish a connection between server and client.
|
|
|
2) public synchronized
void close()
|
closes the server socket.
|
|
Java Program for server side:
import java.net.*;
import java.io.*;
public class Server
{
//initialize socket and input stream
private Socket
socket = null;
private ServerSocket
server = null;
private DataInputStream
in = null;
// constructor with port
public
Server(int port)
{
// starts
server and waits for a connection
try
{
server
= new ServerSocket(port);
System.out.println("Server
started");
System.out.println("Waiting
for a client ...");
socket
= server.accept();
System.out.println("Client
accepted");
//
takes input from the client socket
in
= new DataInputStream(
new BufferedInputStream(socket.getInputStream()));
String
line = "";
//
reads message from client until "Over" is sent
while (!line.equals("Over"))
{
try
{
line
= in.readUTF();
System.out.println(line);
}
catch(IOException
i)
{
System.out.println(i);
}
}
System.out.println("Closing
connection");
//
close connection
socket.close();
in.close();
}
catch(IOException
i)
{
System.out.println(i);
}
}
public
static void main(String args[])
{
Server
server = new Server(5000);
}
}
Client side programming in Java:
|
Method
|
Description
|
|
1) public InputStream getInputStream()
|
returns the InputStream attached with this socket.
|
|
2) public OutputStream getOutputStream()
|
returns
the OutputStream attached with this socket.
|
|
3) public synchronized void close()
|
closes this socket
|
Java Program for client side:
import java.net.*;
import java.io.*;
public class Client
{
// initialize socket and input
output streams
private Socket
socket =
null;
private DataInputStream
input = null;
private DataOutputStream
out = null;
// constructor to put ip address and
port
public
Client(String address, int
port)
{
// establish
a connection
try
{
socket
= new Socket(address,
port);
System.out.println("Connected");
//
takes input from terminal
input
= new DataInputStream(System.in);
//
sends output to the socket
out
= new DataOutputStream(socket.getOutputStream());
}
catch(UnknownHostException
u)
{
System.out.println(u);
}
catch(IOException
i)
{
System.out.println(i);
}
// string to
read message from input
String line
= "";
// keep
reading until "Over" is input
while (!line.equals("Over"))
{
try
{
line
= input.readLine();
out.writeUTF(line);
}
catch(IOException
i)
{
System.out.println(i);
}
}
// close the
connection
try
{
input.close();
out.close();
socket.close();
}
catch(IOException
i)
{
System.out.println(i);
}
}
public
static void main(String args[])
{
Client
client = new Client("127.0.0.1",
5000);
}
}
Snapshots:
Client Server
No comments:
Post a Comment