Net Conference

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Net Conference as PDF for free.

More details

  • Words: 733
  • Pages: 8
Title A Simple Client-Server Multicasting Author S Balasubramanian Author Email spbalu_2k [at] yahoo.com Description NetConference Implementing 1-2-M Conference, Means One Server Responds to Many Clients. It Provides users about Basic Info about Netconference, Multicasting aswell as Multitherading in Java. Category Java � Networking Hits 13268 Code : /* Client Setting NetConference. ______________ */ /* Tips to run this : __________________ (After compiling chatkaro12mserver.java) Step1: Open another prompt and run java chatkaro12mclient ___________________________________ */ /* 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.*;

127.0.0.1.

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= new DataOutputStream(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()

{ 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))

{ 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 import import import import

java.io.*; javax.swing.*; java.net.*; java.awt.*; java.awt.event.*;

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 nice Session.","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;

//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 to server."); } } 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();

System.exit(0); } } class EXIT implements ActionListener { public void actionPerformed(ActionEvent e) { if((JOptionPane.showConfirmDialog(new Frame(),"Are You Sure to close the 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) {

System.out.println(e.getMessage() + " : connection to peer lost."); } finally { try { if(remoteIn !=null) remoteIn.close(); } catch(IOException x) {} } } }

Related Documents

Net Conference
May 2020 2
Net
November 2019 45
Net
May 2020 23
Net
October 2019 36