import java.net.*;
import java.io.*;
public class chatpeer1 {
public static void main(String args[]) throws Exception {
DatagramSocket ioSocket;
String toName = "localhost";
String userIn;
byte sendBuffer[] = new byte[128];
DatagramPacket sendPacket = new DatagramPacket(sendBuffer, 128);
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
Vector chatlist = new Vector();
|
int ioPort = 111, receiverPort = ioPort;
if (args.length > 0) toName = args[0];
else toName = "localhost";
if (toName.equals("localhost")) receiverPort = 222;
try { ioSocket = new DatagramSocket(ioPort); }
catch (Exception e) {
ioPort = 222; receiverPort = 111;
ioSocket = new DatagramSocket(ioPort);
}
System.out.println("chatpeer1 on port " + ioPort + ". Ctrl Z to quit.");
new receiver(ioSocket, chatlist); // Start receiver
chatlist.addElement(toName);
|
while ((userIn=in.readLine())!=null) {
sendBuffer = userIn.getBytes(); // Send chat to all chatters in list
for (int i=0; i<chatlist.size(); i++) {
sendPacket = new DatagramPacket( sendBuffer, userIn.length(),
InetAddress.getByName((String)(chatlist.elementAt(i))),
receiverPort);
|
ioSocket.send(sendPacket);
}
}
System.exit(0); // Exit, stopping receiver
}
}
class receiver implements Runnable {
DatagramSocket ioSocket;
receiver(DatagramSocket ioSocket, Vector chatlist) { // chatlist shared with receiver
this.ioSocket = ioSocket;
this.chatlist = chatlist;
|
new Thread(this).start();
}
public void run() {
byte receiveBuffer[] = new byte[128];
DatagramPacket receivePacket;
while(true) {
receivePacket = new DatagramPacket(receiveBuffer, 128);
try { ioSocket.receive(receivePacket); }
catch (Exception e) {}
System.out.println( "Received " + new String(receivePacket.getData(), 0,
receivePacket.getLength()));
String chatname = receivePacket.getAddress().getHostName();
if(!chatlist.contains(chatname)) chatlist.addElement(chatname);
|
}
}
}
|