net conference
TRANSCRIPT
-
8/14/2019 Net Conference
1/8
Title A Simple Client-Server MulticastingAuthor S BalasubramanianAuthor Email spbalu_2k [at] yahoo.comDescription NetConference Implementing 1-2-M Conference, Means One ServerResponds to Many Clients. It Provides users about Basic Info aboutNetconference, Multicasting aswell as Multitherading in Java.Category Java NetworkingHits 13268
Code :
/*Client Setting
NetConference.______________
*/
/* Tips to run this :__________________
(After compiling chatkaro12mserver.java)
Step1: Open another prompt and run java chatkaro12mclient 127.0.0.1.___________________________________
*/
/*
Server Setting
** NetConference**__________________
*/
/* Tips to run this:__________________
Step1: Open command prompt and run java chatkaro12mserver.______________________
Step2: Continue with client program.
*/
//Code: chatkaro12mserver.java// Program Starts...
import java.io.*;
-
8/14/2019 Net Conference
2/8
import java.net.*;import java.util.Vector;import java.util.Enumeration;public class chatkaro12mServer{
//static String k=socket.getInetAddress().getHostName();private int port=5001;private boolean li=true;
private Vector clients=new Vector();public static void main(String a[]){
System.out.println(" Press ctrl-c to Quit.");new chatkaro12mServer().server();
}void server(){
ServerSocket serverSock=null;try{
InetAddress serverAddr=InetAddress.getByName(null);System.out.println("Waiting for"+serverAddr.getHostName()+"on
port"+port);serverSock=new ServerSocket(port,50);
}catch(IOException e){
System.out.println(e.getMessage()+":Failed");return;
}while(li){
try{
Socket socket=serverSock.accept();
System.out.println("Accept"+socket.getInetAddress().getHostName());
DataOutputStream remoteOut= newDataOutputStream(socket.getOutputStream());
clients.addElement(remoteOut);new ServerHelper(socket,remoteOut,this).start();
}catch(IOException e){
System.out.println(e.getMessage()+":Failed");}
}if(serverSock !=null)
{try{
serverSock.close();}catch(IOException x){}
}}synchronized Vector getClients()
-
8/14/2019 Net Conference
3/8
{return clients;
}synchronized void removeFromClients(DataOutputStream remoteOut){
clients.removeElement(remoteOut);}
}
class ServerHelper extends Thread{
private Socket sock;private DataOutputStream remoteOut;private chatkaro12mServer server;private boolean li=true;private DataInputStream remoteIn;ServerHelper(Socket sock,DataOutputStream remoteOut,chatkaro12mServer
server) throws IOException{
this.sock=sock;this.remoteOut=remoteOut;this.server=server;
remoteIn=new DataInputStream(sock.getInputStream());}public synchronized void run(){
String s;try{
while(li){
s=remoteIn.readUTF();broadcast(s);
}}
catch(IOException e){
System.out.println(e.getMessage()+"connection lost");}finally{
try{
cleanUp();}catch (IOException x){}
}}private void broadcast(String s){
Vector clients=server.getClients();DataOutputStream dataOut=null;for(Enumeration e=clients.elements();e.hasMoreElements(); ){dataOut=(DataOutputStream)(e.nextElement());if(!dataOut.equals(remoteOut))
-
8/14/2019 Net Conference
4/8
{try{dataOut.writeUTF(s);}catch(IOException x){System.out.println(x.getMessage()+"Failed");
server.removeFromClients(dataOut);}
}}}
private void cleanUp() throws IOException{
if(remoteOut!=null){
server.removeFromClients(remoteOut);remoteOut.close();
remoteOut=null;}
if(remoteIn!=null){
remoteIn.close();remoteIn=null;
}
if(sock!=null){
sock.close();sock=null;
}}protected void finalize() throws Throwable{
try{
cleanUp();}catch(IOException x){}super.finalize();
}
}
Code: chatkaro12mclient.java// Program Starts...
import java.io.*;import javax.swing.*;import java.net.*;import java.awt.*;import java.awt.event.*;
-
8/14/2019 Net Conference
5/8
public class chatkaro12mClient extends Panel{TextArea receivedText;Socket sock;private GridBagConstraints c;private GridBagLayout gridBag;private Frame frame;private Label label;
JButton send;JButton exit;private int port=5001;private TextArea sendText;private String hostname;private String username;private DataOutputStream remoteOut;ImageIcon i1,i2;public static void main(String args[]){if(args.length != 2){System.out.println("Format is : java chatkaro12mClient ");
return;}Frame f1=new Frame("Welcome Protocol");f1.resize(800,600);f1.show();JOptionPane.showMessageDialog(f1,"Welcome "+args[0]+".. Have a niceSession.","Welcome",0);Frame f= new Frame("Connecting to Mr. "+args[0]);chatkaro12mClient chat=new chatkaro12mClient(f,args[0],args[1]);f.add("Center",chat);f.setSize(800,600);f.show();chat.client();
}public chatkaro12mClient(Frame f,String user,String host){frame=f;frame.addWindowListener(new WindowExitHandler());username=user;hostname=host;//Insets insets=new Insets(10,20,5,10);//gridBag=new GridBagLayout();//setLayout(gridBag);/*c=new GridBagConstraints();c.insets=insets;c.gridy=0;
c.gridx=0;*/label=new Label("Text to send :");add(label);/*gridBag.setConstraints(label,c);
c.gridx=1;*/sendText=new TextArea(15,30);/*sendText.addActionListener(new TextActionHandler());gridBag.setConstraints(sendText,c);*/add(sendText);//c.gridy=1;
-
8/14/2019 Net Conference
6/8
//c.gridx=0;label= new Label("Text received :");//gridBag.setConstraints(label,c);add(label);//c.gridx=1;receivedText=new TextArea(15,30);//gridBag.setConstraints(receivedText,c);add(receivedText);
ImageIcon i1=new ImageIcon("click.gif");ImageIcon i2=new ImageIcon("doorin2.gif");send=new JButton(i1);exit=new JButton(i2);add(send);add(exit);send.addActionListener(new TextActionHandler());exit.addActionListener(new EXIT());}
void client(){try
{if(hostname.equals("local"))
hostname=null;InetAddress serverAddr= InetAddress.getByName(hostname);sock=new Socket(serverAddr.getHostName(),port);remoteOut=new DataOutputStream(sock.getOutputStream());System.out.println("Connected to server " + serverAddr.getHostName() +
"on port " + sock.getPort());
new chatkaro12mClientReceive(this).start();}catch(IOException e)
{
System.out.println(e.getMessage() + " : Failed to connect toserver.");
}}protected void finalize() throws Throwable{try{
if(remoteOut != null)remoteOut.close();
if(sock != null)sock.close();
}
catch(IOException x){}
super.finalize();}class WindowExitHandler extends WindowAdapter{public void windowClosing(WindowEvent e){Window w=e.getWindow();w.setVisible(false);w.dispose();
-
8/14/2019 Net Conference
7/8
System.exit(0);}}
class EXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
if((JOptionPane.showConfirmDialog(new Frame(),"Are You Sure to closethe Session?"))==JOptionPane.YES_OPTION)
{JOptionPane.showMessageDialog(new Frame(),"Thank U. Visit Again.
","Good Bye",0);System.exit(0);
}
}}class TextActionHandler implements ActionListener{public void actionPerformed(ActionEvent e)
{try{remoteOut.writeUTF(sendText.getText());JOptionPane.showMessageDialog(new Frame(),"Your msg has been sent","Confirmation",0);sendText.setText("");}catch(IOException x){System.out.println(x.getMessage() + " : connection to peer lost.");}}
}}class chatkaro12mClientReceive extends Thread{private chatkaro12mClient chat;chatkaro12mClientReceive(chatkaro12mClient chat){this.chat=chat;}public synchronized void run(){String s;DataInputStream remoteIn=null;
try{
remoteIn= new DataInputStream(chat.sock.getInputStream());while(true)
{s=remoteIn.readUTF();chat.receivedText.setText(s);}
}catch(IOException e){
-
8/14/2019 Net Conference
8/8
System.out.println(e.getMessage() + " : connection to peer lost.");}finally{try{if(remoteIn !=null)
remoteIn.close();
}catch(IOException x){}}}}