Experiment 6 - HTTP & Others
Experiment 6 - HTTP & Others
JAVA NETWORKING
SOCKET PROGRAMMING
The following steps occur when establishing a TCP connection between two computers
using sockets:
After the connections are established, communication can occur using I/O streams. Each
socket has both an OutputStream and an InputStream. The client's OutputStream is
connected to the server's InputStream, and the client's InputStream is connected to the
server's OutputStream.
1
Classes used are
1. Socket
2. ServerSocket
3. InetAddress
4. URL
Socket class
Constructors:
1. public Socket()
Creates an unconnected socket. Use the connect() method to connect this
socket to a server.
Methods:
2
ServerSocket class
A server socket waits for requests to come in over the network. It performs some
operation based on that request, and then possibly returns a result to the requester
Constructors:
Parameters:
port - the port
Creates a server socket, binds it to the specified local port and listens to it. You can
connect to an annonymous port by specifying the port number to be 0.
Parameters:
port - the specified port
count - the amt of time to listen for a connection
Methods:
3
InetAddress class
InetAddress encapsulates both numerical IP address and the domain name for that
address
InetAddress can handle both IPv4 and IPv6 address
URL class
Present in the java.net package, deals with the URL (Uniform resource locator)
which uniquely identify or locate resources on Internet.
Important terms
1. Host
2. Localhost
The system on which the present program is running is localhost for that program
3. Server
Any software (program) that can receive a request, process it and can send a
response
4. Serverhost
5. Client
Any software (program) that can send a request and receive a response
6. Clienthost
7. Port
A single server host can have any number of server softwares. Each of the servers
running on the serverhost will be given a unique memory id number called “port”
4
LAB PROGRAMS
Program
import java.io.*;
import java.net.*;
class WellKnown
{
public static void main(String args[])
{
for(int i=100;i<200;i++)
{
try
{
Socket s=new Socket(host,i);
System.out.println("There is a server on port :"+ i +" of: " +host);
}
catch(UnknownHostException e)
{
System.err.println(e);
}
catch(IOException ie)
{
System.out.println(ie.getMessage());
}
}
}
}
5
Output:
6
2. Write a: One - One chat application
• In Internet terms, this can be done by e-mail but the most typical one-to-one
communication in the Internet is instant
import java.io.*;
import java.net.*;
import java.lang.*;
public class chatclient1
{
public static void main(String args[]) throws IOException
{
Socket csoc=null;
String host;
if(args.length>0)
host=args[0];
else
host="localhost";
PrintWriter pout=null;
BufferedReader bin=null;
try
{
csoc=new Socket(host,7);
pout=new PrintWriter(csoc.getOutputStream(),true);
bin=new BufferedReader(new InputStreamReader(csoc.getInputStream()));
}
catch(UnknownHostException e)
{
System.err.println("Unknownhost");
System.exit(1);
}
catch(IOException e)
{}
BufferedReader in=new BufferedReader(new
InputStreamReader(System.in));
7
String input;
while(true)
{
input=in.readLine();
pout.println(input);
String msg=bin.readLine();
System.out.println("client :"+msg);
if(msg.equals("bye"))
break;
}
in.close();
pout.close();
bin.close();
csoc.close();
}
}
import java.io.*;
import java.net.*;
import java.lang.*;
public class chatserver1
{
public static void main(String args[]) throws IOException
{
ServerSocket ssoc=null;
try
{
ssoc=new ServerSocket(7);
}
catch(IOException e)
{
System.err.println("No connection established");
System.exit(1);
}
Socket csoc=null;
try
{
csoc=ssoc.accept();
}
8
catch(IOException e)
{
System.err.println("Not accepted");
System.exit(1);
}
PrintWriter pw=new PrintWriter(csoc.getOutputStream(),true);
BufferedReader br=new BufferedReader(new
InputStreamReader(csoc.getInputStream()));
String inline;
String outline;
try
{
DataInputStream din=new DataInputStream(System.in);
while(true)
{
inline=br.readLine();
System.out.println("Server :"+inline);
outline=din.readLine();
pw.println(outline);
if(outline.equals("bye"))
break;
}
}
catch(Exception e)
{
System.err.println(e);
}
pw.close();
br.close();
csoc.close();
ssoc.close();
}
}
9
Output
10
Many to Many Chat Application
Each client opens a socket connection to the chat server and writes to the socket
whatever is written by one party can be seen by all other parties.
Chat Rooms in yahoo is the best example for this many to many chat application.
11
Client Side Program
import java.net.*;
import java.io.*;
public class mclient
{
public static void main(String a[])
{
BufferedReader in;
PrintWriter pw;
try
{
Socket s = new Socket("localhost",118);
System.out.println("Enter name");
in = new BufferedReader(new InputStreamReader(System.in));
String msg = in.readLine();
pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println(msg+"\n");
pw.flush();
while(true)
{
readdata rd = new readdata(s);
Thread t = new Thread(rd);
t.start();
msg = in.readLine();
if(msg.equals("quit"))
{
System.exit(0);
}
pw.println(msg);
pw.flush();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
12
class readdata implements Runnable
{
public Socket s;
public readdata(Socket s)
{
this.s = s;
}
public void run()
{
BufferedReader br;
try
{
while(true)
{
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String msg = br.readLine();
System.out.println(msg);
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
import java.net.*;
import java.io.*;
public class mserver
{
public static Socket s[] = new Socket[10];
public static String user[] = new String[10];
public static int total;
public static void main(String a[])
{
int i=0;
try
{
13
ServerSocket ss = new ServerSocket(118);
while(true)
{
s[i] = ss.accept();
BufferedReader br = new BufferedReader(new
InputStreamReader(s[i].getInputStream()));
String msg = br.readLine();
user[i] = msg;
System.out.println(msg+" connected") ;
try
{
reqhandler req = new reqhandler(s[i],i);
total = i;
i++;
Thread t = new Thread(req);
t.start();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
class reqhandler implements Runnable
{
public int n;
public Socket s;
public reqhandler(Socket soc,int i)
{
s = soc;
n = i;
}
public void run()
{
String msg = "";
14
BufferedReader br,br1;
PrintWriter pw;
try
{
while(true)
{
br1 = new BufferedReader(new InputStreamReader(System.in));
if((br1.readLine()).equals("quit"))
System.exit(0);
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
msg = br.readLine();
if(msg.equals("quit"))
mserver.total--;
else
System.out.println(mserver.user[n]+"->"+msg);
if(mserver.total == -1)
{
System.out.println("Server Disconnected");
System.exit(0);
}
for(int k=0;k<=mserver.total;k++)
if(!mserver.user[k].equals(mserver.user[n])&&(!msg.equals("quit")))
{
pw = new PrintWriter(new OutputStreamWriter(mserver.s[k].getOutputStream()));
pw.println(mserver.user[n]+":"+msg+"\n");
pw.flush();
}
}
}
}
catch(Exception e)
{
}
}
}
15
Output
16
17
Data Retrieval from a Remote Database
18
Server Side Program
import java.io.*;
import java.net.*;
import java.sql.*;
class rdbserver
{
public static void main(String args[])
{
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try
{
ServerSocket ssoc=new ServerSocket(1111);
System.out.println("wait for client connection:\n");
Socket csoc=ssoc.accept();
if(csoc!=null)
System.out.println("client is connected:");
BufferedReader fromc=new BufferedReader(new
InputStreamReader(csoc.getInputStream()));
PrintStream toc=new PrintStream(csoc.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String query="";
StringBuffer rset=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:vinod","scott","tiger");
stmt=conn.createStatement();
do
{
query=fromc.readLine();
System.out.println("client query request:"+query);
if(query.equalsIgnoreCase("quit"))
break;
rs=stmt.executeQuery(query);
ResultSetMetaData rsmd=rs.getMetaData();
int noCol=rsmd.getColumnCount();
if(rs.next())
{
19
rset=new StringBuffer("RESULT:\n");
for(int i=1;i<=noCol;i++)
rset.append(rsmd.getColumnLabel(i)+"\n");
rset.append("\n");
}
do
{
for(int i=1;i<=noCol;i++)
rset.append(rs.getString(i)+"\t");
rset.append("\n");
}
while(rs.next());
rset.append("");
toc.println(rset);
}
while(!query.equalsIgnoreCase("quit"));
conn.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
20
Client Side Program
import java.io.*;
import java.net.*;
import java.sql.*;
public class rdbclient
{
public static void main(String args[])
{
System.out.println("connected to serverdata");
try
{
Socket soc=new Socket("localhost",1111);
PrintStream tos=new PrintStream(soc.getOutputStream());
BufferedReader froms=new BufferedReader(new
InputStreamReader(soc.getInputStream()));
BufferedReader fromkb=new BufferedReader(new
InputStreamReader(System.in));
do
{
query=fromkb.readLine();
tos.println(query);
if(query.equalsIgnoreCase("quit"))
break;
do
{
query=froms.readLine();
System.out.println(query);
}
while(!query.startsWith(""));
}
while(!query.equalsIgnoreCase("quit"));
}
catch(Exception e)
{
System.out.println(e);
}
21
}
}
22
Simple Mail Transfer Protocol
Program
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
/*** This class defines methods that display the gui and handle the sending of
*mails to the Mail server. */
public class SMTP extends WindowAdapter implements ActionListener
{
private Button sendBut = new Button("Send Message");
public SMTP()
{
clientFrame.setLayout(new GridLayout(2,1));
23
Panel p13 = new Panel();
p13.setLayout(new FlowLayout());
p13.add(toLabel);
p13.add(toTxt);
24
pw.println("HELLO");
System.out.println(br.readLine());
pw.println("MAIL From:"+fromTxt.getText());
System.out.println(br.readLine());
pw.println("RCPT To:"+toTxt.getText());
System.out.println(br.readLine());
pw.println("DATA");
pw.println(msgTxt.getText()+"\n.\n");
System.out.println(br.readLine());
pw.println("QUIT");
pw.flush();
s.close();
System.out.println("Mail has been sent....");
}
catch(Exception e)
{
}
System.out.println("Connection Terminated");
}
public static void main(String args[])
{
SMTP client = new SMTP();
}
}//end of SMTP class
25
Output
26
POP client
Short for POST OFFICE PROTOCOL, a protocol used to retrieve e-mail from a
mail server. Most e-mail applications (sometimes called an e-mail client) use the
POP protocol, although some can use the newer IMAP (Internet Message Access
Protocol).
There are two versions of POP. The first, called POP2, became a standard in the
mid-80's and requires SMTP to send messages. The newer version, POP3, can be
used with or without SMTP. POP3 uses TCP/IP port 110.
With IMAP, all your mail stays on the server in multiple folders, some of which
you have created. This enables you to connect to any computer and see all your
mail and mail folders. In general, IMAP is great if you have a dedicated connection
to the Internet or you like to check your mail from various locations.
With POP3 you only have one folder, the Inbox folder. When you open your
mailbox, new mail is moved from the host server and saved on your computer. If
you want to be able to see your old mail messages, you have to go back to the
computer where you last opened your mail.
With POP3 "leave mail on server" only your email messages are on the server, but
with IMAP your email folders are also on the server.
27
Email Services & SMTP/POP Protocols
Post Office Protocol (POP) and Simple Mail Transfer Protocol (SMTP) are
involved in email services.
Users use an application called a Mail User Agent (MUA), or e-mail client to
allow messages to be sent and places received messages into the client's mailbox.
In order to receive e-mail messages from an e-mail server, the e-mail client can use
POP.
Sending e-mail from either a client or a server uses message formats and command
strings defined by the SMTP protocol.
Fig: Mail Transfer Agent (MTA) & Mail Delivery Agent (MDA)
28
Server Side Program
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
class pop extends JFrame implements ActionListener
{
JPanel jp;
JLabel lpadd,lpnum,lpass,lretr,luser;
JTextField padd,pnum,user,retr,del;
JPasswordField pass;
JTextArea receive;
JScrollPane scrlp;
JButton login,list,quit,retrv,dele;
Socket s;
PrintWriter pw;
BufferedReader br;
int nmesgs;
pop()
{
jp=new JPanel();
jp.setLayout(null);
lpadd=new JLabel("port address");
lpadd.setBounds(20,20,100,20);
jp.add(lpadd);
padd=new JTextField();
padd.setBounds(110,20,120,20);
jp.add(padd);
lpnum=new JLabel("port number");
lpnum.setBounds(20,40,100,20);
jp.add(lpnum);
pnum=new JTextField();
pnum.setBounds(110,40,120,20);
jp.add(pnum);
login=new JButton("login");
login.setBounds(20,100,210,20);
jp.add(login);
login.addActionListener(this);
luser=new JLabel("user name");
29
luser.setBounds(20,60,100,20);
jp.add(luser);
user=new JTextField();
user.setBounds(110,60,120,20);
jp.add(user);
lpass=new JLabel("password");
lpass.setBounds(20,80,100,20);
jp.add(lpass);
pass=new JPasswordField();
pass.setBounds(110,80,120,20);
jp.add(pass);
list=new JButton("list");
list.setBounds(20,120,210,20);
list.addActionListener(this);
jp.add(list);
retrv=new JButton("retrieve");
retrv.setBounds(130,145,130,20);
jp.add(retrv);
retrv.addActionListener(this);
dele=new JButton("delete");
dele.setBounds(130,165,130,20);
jp.add(dele);
dele.addActionListener(this);
lretr=new JLabel("enter the meg numebr");
lretr.setBounds(20,145,120,20);
jp.add(lretr);
retr=new JTextField();
retr.setBounds(100,145,30,20);
retr.addActionListener(this);
jp.add(retr);
del=new JTextField();
del.setBounds(100,165,30,20);
del.addActionListener(this);
jp.add(del);
receive=new JTextArea();
receive.setEditable(false);
scrlp=new JScrollPane(receive);
jp.add(scrlp);
scrlp.setBounds(20,200,300,200);
quit=new JButton("quit");
quit.setBounds(130,410,80,30);
jp.add(quit);
quit.addActionListener(this);
setTitle("Post Office Protocol");
30
setSize(350,470);
show();
this.getContentPane().add(jp);
setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==login)
{
try
{
s=new Socket(padd.getText(),Integer.parseInt(pnum.getText()));
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true);
receive.setText(br.readLine()+"\n");
pw.println("user"+user.getText());
receive.append(br.readLine()+"\n");
pw.println("pass"+pass.getText());
receive.append(br.readLine()+"\n");
}
catch(IOException e)
{
JOptionPane.showMessageDialog(new JPanel(),"connection cannot be
established");
}
}
if(ae.getSource()==list)
{
StringTokenizer st;
String str;
pw.println("list");
try
{
str=br.readLine();
st=new StringTokenizer(str);
st.nextToken();
str=st.nextToken();
nmesgs=Integer.parseInt(str)+1;
for(int i=0;i<nmesgs;i++)
receive.append(br.readLine()+"\n");
receive.append("no of messages :" + str + "\n");
}
catch(Exception e)
{
31
JOptionPane.showMessageDialog(new JPanel(),e);
}
}
if(ae.getSource()==retrv)
{
String k=retr.getText().trim();
pw.println("RETR \n"+k);
int l=Integer.parseInt(k);
try
{
String st=br.readLine();
if(l<nmesgs&&l>0)
{
while(!st.equals("."))
{
receive.append(st+"\n");
st=br.readLine();
}
}
else
{
receive.append(st+"\n");
}
retr.setText("");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(new JPanel(),e);
}
}
if(ae.getSource()==quit)
System.exit(0);
if(ae.getSource()==dele)
{
try
{
pw.println("dele"+del.getText().trim());
nmesgs--;
del.setText("");
receive.append(br.readLine()+"\n");
}
32
catch(Exception e)
{
JOptionPane.showMessageDialog(new JPanel(),e);
}
}
}
public static void main(String args[])
{
pop p=new pop();
}
}
import java.io.*;
import java.net.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class POPClient extends Frame implements ActionListener
{
TextField user,pass,host,msgno;
TextArea msgta;
Button signin,disp,prev,next,exit;
int no_of_msg,n;
String str;
BufferedReader br1,br2;
PrintWriter pw;
Socket s=null;
public POPClient()
{
super("POP");
user=new TextField(20);
pass=new TextField(20);
host=new TextField(20);
msgno=new TextField(20);
msgta=new TextArea("",10,50);
signin=new Button("LOGIN");
disp=new Button("DISPLAY");
next=new Button("NEXT");
prev=new Button("PREVIOUS");
33
exit=new Button("EXIT");
no_of_msg=0;
str=" ";
n=0;
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
Panel p4 = new Panel();
setLayout(new GridLayout(3,1));
setSize(400,400);
p1.setLayout(new GridLayout(4,1));
Panel p11 = new Panel();
p11.add(new Label("User Name : "));
p11.add(user);
Panel p12 = new Panel();
p12.add(new Label("Password : "));
p12.add(pass);
Panel p13 = new Panel();
p13.add(new Label("Host Name : "));
p13.add(host);
Panel p14 = new Panel();
p14.add(signin);
p1.add(p11);
p1.add(p12);
p1.add(p13);
p1.add(p14);
p3.setLayout(new GridLayout(1,1));
p3.add(msgta);
p4.setLayout(new GridLayout(3,1));
Panel p41 = new Panel();
p41.add(new Label("Enter message number :"));
p41.add(msgno);
Panel p42 = new Panel();
p42.add(disp);
p42.add(new Label(" "));
p42.add(prev);
Panel p43 = new Panel();
p43.add(next);
p43.add(new Label(" "));
p43.add(exit);
p4.add(p41);
p4.add(p42);
p4.add(p43);
add(p1);
34
add(p4);
add(p3);
setVisible(true);
pass.setEchoChar('*');
signin.addActionListener(this);
disp.addActionListener(this);
prev.addActionListener(this);
next.addActionListener(this);
exit.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
try
{
if(ae.getSource()==signin)
{
s=new Socket(host.getText(),110);
br1=new BufferedReader(new
InputStreamReader(s.getInputStream()));
pw=new PrintWriter(s.getOutputStream(),true);
msgta.append(br1.readLine());
System.out.println("1");
pw.println("user "+user.getText());
System.out.println("2");
msgta.append("\n"+br1.readLine());
pw.println("PASS "+pass.getText());
System.out.println("3");
msgta.append("\n"+br1.readLine());
pw.println("list");
str=br1.readLine();
msgta.append("\n"+str);
StringTokenizer st=new StringTokenizer(str);
String tmpstr=st.nextToken();
tmpstr=st.nextToken();
no_of_msg=Integer.parseInt(tmpstr);
while(!(br1.readLine().equals(".")));
}
if(ae.getSource()==disp)
{
n=Integer.parseInt(msgno.getText());
display();
}
if(ae.getSource()==next)
{
35
n++;
display();
}
if(ae.getSource()==prev)
{
n--;
display();
}
if(ae.getSource()==exit)
{
if(s!=null)
s.close();
System.out.println("Connection terminated....");
System.exit(1);
}
}
catch(Exception c)
{
System.out.println(c);
}
}
void display()
{
msgta.setText("");
msgno.setText(String.valueOf(n));
if(n>0&&n<=no_of_msg)
{
System.out.println("N:"+n);
pw.println("retr "+n);
do
{
try
{
str=br1.readLine();
36
}
catch (Exception e)
{}
System.out.println("msg"+str);
msgta.append("\n"+str);
}while(!str.equals("."));
}
else
msgta.setText("You have "+no_of_msg+" mails");
}
public static void main(String args[])
{
POPClient p=new POPClient();
}
}
37
File Transfer Protocol (FTP)
A standard network protocol used to exchange and manipulate files over a TCP/IP-
based network, such as the Internet.
Built on a client-server architecture and utilizes separate control and data
connections between the client and server applications.
FTP differs from other client-server applications, it establishes two connections
between the hosts
The first one is a data transfer connection which does Data Transfer Process (DTP)
The other is a control information connection which interprets FTP commands
through Protocol Interpreter
import java.net.*;
import java.io.*;
public class ftpclient
{
public static void main (String args[])
{
Socket s;
BufferedReader in, br;
PrintWriter pw;
String spath,dpath;
FileOutputStream fos;
int c;
try
{
s = new Socket ("localhost",1111);
in = new BufferedReader (new InputStreamReader (System.in));
br = new BufferedReader (new InputStreamReader (s.getInputStream()));
pw = new PrintWriter(s.getOutputStream(), true);
System.out.println("\nEnter Sourcepath to copy file : ");
spath = in.readLine();
System.out.println("\nEnter DestinationPath to transfer : ");
dpath = in.readLine();
fos = new FileOutputStream(dpath);
pw.println (spath);
while ((c=br.read())!=-1)
38
{
fos.write((char)c);
fos.flush();
}
System.out.println("File trasfer completed:\n");
}
catch (Exception e)
{
System.out.println(e);
}
}
}
import java.net.*;
import java.io.*;
public class ftpserver
{
public static void main(String args[])
{
Socket s;
ServerSocket server;
FileInputStream fis;
BufferedReader br;
PrintWriter pw;
String filename;
int c;
try
{
server = new ServerSocket(1111);
System.out.println("Server waitfor for connection:\n");
s = server.accept();
System.out.println("Connection established:\n");
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw = new PrintWriter(s.getOutputStream());
filename = br.readLine();
fis = new FileInputStream(filename);
while ((c=fis.read())!=-1)
{
39
pw.print((char)c);
pw.flush();
}
System.out.println(filename + " copied to destnation");
s.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
Output
40
Telnet
In the very earliest days of internetworking, one of the most important problems
that computer scientists needed to solve was how to allow someone operating one
computer to access and use another as if he or she were connected to it locally. The
protocol created to meet this need was called Telnet, and the effort to develop it
was tied closely to that of the Internet and TCP/IP as a whole.
Telnet (teletype network) is a network protocol used on the Internet or local area
networks to provide a bidirectional interactive communications facility. Typically,
telnet provides access to a command-line interface on a remote host via a virtual
terminal connection which consists of an 8-bit byte oriented data connection over
the Transmission Control Protocol.
41
Program
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
42
connectMenu.add(exit = new MenuItem("Exit"));
mbar.add(connectMenu);
helpMenu = new Menu("Help");
helpMenu.add(help = new MenuItem("help"));
mbar.add(helpMenu);
connect.addActionListener(new Telnet());
disconnect.addActionListener(new Telnet());
exit.addActionListener(new Telnet());
help.addActionListener(new Telnet());
msgArea.addKeyListener(new Telnet());
p.add(msgArea,BorderLayout.CENTER);
p.add(statusArea,BorderLayout.SOUTH);
telFrame.setSize(450,350);
telFrame.setMenuBar(mbar);
telFrame.add(p);
telFrame.setVisible(true);
telFrame.addWindowListener(new Telnet());
}
public void windowClosing(WindowEvent we)
{
telFrame.setVisible(false);
System.exit(0);
}
public void keyPressed(KeyEvent ke) {}
public void keyReleased(KeyEvent ke) {}
public void keyTyped(KeyEvent ke)
{
if(ke.getKeyChar() == KeyEvent.VK_ENTER)
{
System.out.println(command);
pw.println(command);
command = "";
}
else if(ke.getKeyChar() != KeyEvent.VK_SHIFT)
command = command + ke.getKeyChar();
}
public void actionPerformed(ActionEvent ae)
{
String str = ae.getActionCommand();
if(str.equals("Exit"))
System.exit(0);
if(str.equals("Connect"))
new ConnectFrame();
43
else if(str.equals("Disconnect"))
{
if(!(s==null))
{
System.out.println("in disconnecting...");
System.out.println("Connection terminated");
statusArea.setText("Connection terminated");
try
{
s.close();
s = null;
}
catch(Exception e)
{
System.out.println("closing socket.");
}
}
}
else
{
new HelpFrame();
}
}
public void makeConnection()
{
try
{
s = new
Socket(ConnectFrame.host.getText().trim(),Integer.parseInt(ConnectFrame.port.getText().
trim()));
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw = new PrintWriter(s.getOutputStream(),true);
statusArea.setText("Connection Established");
new ReadThrd(msgArea,statusArea,br);
}
catch(Exception e)
{
System.out.println(e);
statusArea.setText("Connection Failed");
}
}
}
class ReadThrd extends Thread
{
44
TextArea msgArea;
TextField statusArea;
BufferedReader br;
ReadThrd(TextArea msgArea,TextField statusArea,BufferedReader br)
{
super("reading data thread");
this.msgArea = msgArea;
this.statusArea = statusArea;
this.br = br;
start();
}
public void run()
{
try
{
int off = 0;
while(true)
{
String reply = br.readLine();
if(reply == null)
{
msgArea.append("\n\n--------The remote host is not responding--------
\n\n");
break;
}
msgArea.append(reply+"\n");
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
class ConnectFrame extends WindowAdapter implements ActionListener
{
Frame conFrame;
public static TextField host,port;
Button connect,cancel;
public ConnectFrame()
{
conFrame = new Frame("Connecting....");
host = new TextField(10);
port = new TextField(10);
45
connect = new Button("Connect");
cancel = new Button("Cancel");
Panel p1 = new Panel();
p1.add(new Label("Remote Host : "));
p1.add(host);
Panel p2 = new Panel();
p2.add(new Label("Port Number : "));
p2.add(port);
Panel p3 = new Panel();
p3.add(connect);
p3.add(cancel);
46
public HelpFrame()
{
helpFrame = new Frame("Telnet Help");
TextArea helpTxt = new TextArea();
helpTxt.setEditable(false);
helpTxt.setText("Telnet help");
helpFrame.add(helpTxt);
helpFrame.setSize(300,400);
helpFrame.setVisible(true);
helpFrame.addWindowListener(this);
}
47
Output
48
Trivial File Transfer Protocol (TFTP)
Is a file transfer protocol, with the functionality of a very basic form of File
Transfer Protocol (FTP)
It is a simple protocol to transfer files. It has been implemented on top of the User
Datagram Protocol (UDP) using port number 69.
TFTP only reads and writes files (or mail) from/to a remote server. It cannot list
directories, and currently has no provisions for user authentication.
TFTP supports three different transfer modes, "netascii", "octet" and "mail", with
the first two corresponding to the "ASCII" and "image" (binary) modes of the FTP
protocol, and the third was made obsolete by RFC 1350.
TFTP is based in part on the earlier protocol EFTP, which was part of the PUP
protocol suite.
TFTP is used to read files from, or write files to, a remote server.
Due to the lack of security, it is dangerous over the open Internet. Thus, TFTP is
generally only used on private, local networks.
Limitations of TFTP
o TFTP cannot list directory contents.
o TFTP has no authentication or encryption mechanisms.
o TFTP allows big data packets which may burst and cause delay in
transmission.
o TFTP cannot download files larger than 1 Terabyte.
import java.io.*;
import java.net.*;
import java.lang.*;
public class tftps
{
public static void main(String args[]) throws Exception
{
DatagramSocket ds=new DatagramSocket(1500);
byte s[]=new byte[1024];
DatagramPacket dp=new DatagramPacket(s,1024);
ds.receive(dp);
String data=new String(dp.getData(),0,dp.getLength());
int count=0;
System.out.println("ENTER THE FILE NAME TO TRANFER:" +data);
FileInputStream fs=new FileInputStream (data);
49
while(fs.available()!=0)
{
if(fs.available()<1024)
count=fs.available();
);
else
count=1024;
s=new byte[count];
fs.read(s
dp=new DatagramPacket(s,s.length,InetAddress.getLocalHost(),1501);
ds.send(dp);
}
fs.close();
s=new byte[3];
s="***".getBytes();
ds.send(newDatagramPacket(s,s.length,InetAddress.getLocalHost(),1501));
ds.close();
}
}
50
Client Side Program
import java.io.*;
import java.net.*;
import java.lang.*;
public class tftpc
{
public static void main(String args[]) throws Exception
{
DatagramSocket ds=new DatagramSocket(1501);
BufferedReader input=newBufferedReader(new
InputStreamReader(System.in));
System.out.println("ENTER THE FILE NAME TO SAVE:");
String file=input.readLine();
FileOutputStream fos=new FileOutputStream(file);
System.out.println("ENTER THE FILE NAME TO TRANFER:");
file=input.readLine();
byte s[]=new byte[file.length()];
s=file.getBytes();
String data=null;
ds.send(new DatagramPacket(s,s.length,InetAddress.getLocalHost(),1500));
while(true)
{
s=new byte[1024];
DatagramPacket dp=new DatagramPacket(s,1024);
ds.receive(dp);
data=new String(dp.getData(),0,dp.getLength());
if(data.equals("***"))
break;
fos.write(data.getBytes());
}
fos.close();
ds.close();
}
}
51
Output
Server Side:
Client Side:
52
Hyper Text Transfer Protocol (HTTP)
import java.io.*;
import java.net.*;
import java.lang.*;
public class https
{
public static void main(String args[]) throws Exception
{
ServerSocket ssoc=new ServerSocket(1111);
System.out.println("Server waits for client:\n");
Socket so=ssoc.accept();
System.out.println("client connected to Server :\n");
BufferedReader br=new BufferedReader(new
InputStreamReader(so.getInputStream()));
PrintWriter pw=new PrintWriter(so.getOutputStream(),true);
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int ch;
do
{
ch=Integer.parseInt(br.readLine());
String file;
byte line[]=null;
File f;
switch(ch)
{
case 1: System.out.println("1.head");
file=br.readLine();
f=new File(file);
int index=file.lastIndexOf(".");
String type=file.substring(index+1);
pw.println(type);
long length=f.length();
pw.println(length);
break;
case 2: System.out.println("2.post");
file=br.readLine();
System.out.println("message from client:\n");
System.out.println(file);
53
break;
case 3: System.out.println("3.get");
file=br.readLine();
FileInputStream fs=new FileInputStream(file);
while(fs.available()!=0)
{
if(fs.available()<1024)
line=new byte[fs.available()];
else
line=new byte[1024];
fs.read(line);
file=new String(line);
pw.println(file);
}
pw.println("***");
fs.close();
break;
case 4: System.out.println("4.delete");
file=br.readLine();
f=new File(file);
f.delete();
break;
default: System.out.println("5.exit");
System.exit(0);
}
}while(ch<=4);
so.close();
ssoc.close();
}
}
54
Client Side Program
import java.io.*;
import java.net.*;
import java.lang.*;
public class httpc
{
public static void main(String args[]) throws Exception
{
Socket soc=new Socket("localhost",1111);
BufferedReader br=new BufferedReader(new
InputStreamReader(soc.getInputStream()));
PrintWriter pw=new PrintWriter(soc.getOutputStream(),true);
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
System.out.println("server is connected:\n");
int ch;
do
{
System.out.println("COMMANDS");
System.out.println("\n 1.head \n 2.post \n 3.get \n4.delete\n 5.exit");
System.out.println("ENTER UR CHOICE:");
ch=Integer.parseInt(in.readLine());
byte line[]=null;
String file;
switch(ch)
{
case 1:pw.println("1");
file=in.readLine();
pw.println(file);
String type=br.readLine();
String length=br.readLine();
System.out.println("FILE:"+file+"\nTYPE:"+type+"\nLEN GTH:"+length);
break;
case 2: pw.println("2");
System.out.println("enter text to post");
file=in.readLine();
pw.println(file);
System.out.println("text is posted at server");
break;
55
case 3:pw.println("3");
System.out.println("enter file name to get");
file=in.readLine();
pw.println(file);
System.out.println("enter file name to save:");
file=in.readLine();
FileOutputStream fs=new FileOutputStream(file);
while(true)
{
String s=br.readLine();
if(s.equals("***"))
break;
int count=s.length();
if(count<1024)
line=new byte[1024];
line=s.getBytes();
fs.write(line);
}
fs.close();
System.out.println("\n file successfully tranfered:");
break;
case 4: pw.println("4");
System.out.println("enter the file to delete:");
file=in.readLine();
pw.println(file);
System.out.println("given file deleted:");
break;
default: pw.println("5");
System.exit(0);
}
}while(ch<=4);
soc.close();
}
}
56
Output
57
Server Side output window
58
Write a program to obtain the local and remote socket address
Program
import java.net.InetAddress;
import java.net.UnknownHostException;
String ipaddress=address.getHostAddress();
System.out.println("IP address of Remote system is: "+ipaddress);
}
}
Output
59
Write a program to obtain information about
a) Host
b)Network
c)Protocol
d)Domain
Program
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
//HOST
System.out.println("Localhost IP: "+addr);
String ipadd=addr.getHostAddress();
System.out.println("Host IP: "+ipadd);
//DOMAIN
URL url = new URL("http://www.auce.com/index.htm?language=en#j2se");
System.out.println("Domain is: "+Information.getDomainName(url.toString()));
//PROTOCOL
System.out.println("protocol is: "+ url.getProtocol());
60
//NETWORK
System.out.println("authority is: "+ url.getAuthority());
System.out.println("file name is: " + url.getFile());
System.out.println("host is: " + url.getHost());
System.out.println("path is: " + url.getPath());
System.out.println("port is: " + url.getPort());
System.out.println("default port is: "+ url.getDefaultPort());
System.out.println("query is: " + url.getQuery());
System.out.println("ref is: " + url.getRef());
}//end of main()
61
Output
port is: -1
62
Write a program to manipulate the IP address
Manipulate:
1. IP address identification
2. Validation of IP
Program
import java.net.*;
public class Manipulate{
public static void main(String args[]) throws UnknownHostException {
InetAddress addr=InetAddress.getLocalHost();
System.out.println("IP address is: "+addr);
Output
63