PRACTICAL 10 (Java)
PRACTICAL 10 (Java)
socket.joinGroup(group);
Thread t = new Thread(new
ReadThread(socket,group,port));
if(message.equalsIgnoreCase(GroupChat.TERMINA
TE))
{
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!");
}
}
}
}
Output: