Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- A Group chat application in Java
- In this post, a group chat application using MulticastSocket (Java Platform SE 7) class is discussed. A MulticastSocket is a (UDP) DatagramSocket, with additional capabilities for joining “groups” of other multicast hosts on the internet.
- Implementation
- filter_none
- edit
- play_arrow
- brightness_4
- import java.net.*;
- import java.io.*;
- import java.util.*;
- public class GroupChat
- {
- private static final String TERMINATE = "Exit";
- static String name;
- static volatile boolean finished = false;
- public static void main(String[] args)
- {
- if (args.length != 2)
- System.out.println("Two arguments required: <multicast-host> <port-number>");
- else
- {
- try
- {
- InetAddress group = InetAddress.getByName(args[0]);
- int port = Integer.parseInt(args[1]);
- Scanner sc = new Scanner(System.in);
- System.out.print("Enter your name: ");
- name = sc.nextLine();
- MulticastSocket socket = new MulticastSocket(port);
- // Since we are deploying
- socket.setTimeToLive(0);
- //this on localhost only (For a subnet set it as 1)
- socket.joinGroup(group);
- Thread t = new Thread(new
- ReadThread(socket,group,port));
- // Spawn a thread for reading messages
- t.start();
- // sent to the current group
- System.out.println("Start typing messages...\n");
- while(true)
- {
- String message;
- message = sc.nextLine();
- if(message.equalsIgnoreCase(GroupChat.TERMINATE))
- {
- finished = true;
- socket.leaveGroup(group);
- socket.close();
- break;
- }
- message = name + ": " + message;
- byte[] buffer = message.getBytes();
- DatagramPacket datagram = new
- DatagramPacket(buffer,buffer.length,group,port);
- socket.send(datagram);
- }
- }
- catch(SocketException se)
- {
- System.out.println("Error creating socket");
- se.printStackTrace();
- }
- catch(IOException ie)
- {
- System.out.println("Error reading/writing from/to socket");
- ie.printStackTrace();
- }
- }
- }
- }
- class ReadThread implements Runnable
- {
- private MulticastSocket socket;
- private InetAddress group;
- private int port;
- private static final int MAX_LEN = 1000;
- ReadThread(MulticastSocket socket,InetAddress group,int port)
- {
- this.socket = socket;
- this.group = group;
- this.port = port;
- }
- @Override
- public void run()
- {
- while(!GroupChat.finished)
- {
- byte[] buffer = new byte[ReadThread.MAX_LEN];
- DatagramPacket datagram = new
- DatagramPacket(buffer,buffer.length,group,port);
- String message;
- try
- {
- socket.receive(datagram);
- message = new
- String(buffer,0,datagram.getLength(),"UTF-8");
- if(!message.startsWith(GroupChat.name))
- System.out.println(message);
- }
- catch(IOException e)
- {
- System.out.println("Socket closed!");
- }
- }
- }
- }
- Save the file as GroupChat.java and compile it using javac and then run the program using two command line arguments as specified. A multicast host is specified by a class D IP address and by a standard UDP port number. Class D IP addresses are in the range 224.0.0.0 to 239.255.255.255, inclusive. The address 224.0.0.0 is reserved and should not be used.
- For more information visit this site:
- https://www.youtube.com/channel/UCJ0nVqHF9lBebRXugUOin4A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement