import java.awt.; import java.awt.event.; import javax.swing.; import java.io.; import java.net.; import java.util.;
public class Draw extends JFrame {
/*
* Socket stuff
*/
static String host;
static int port;
static int localport;
DatagramSocket ds;
Socket socket;
Draw d;
Paper p = new Paper(ds);
public Draw(int localport, String host, int port) {
d = this;
this.localport = localport;
this.host = host;
this.port = port;
try {
ds = new DatagramSocket(localport);
InetAddress ia = InetAddress.getByName(host);
System.out.println("Attempting to connect DatagramSocket. Local port "
+ localport + " , foreign host " + host + ", foreign port " + port + "...");
ds.connect(ia, port);
System.out.println("Success, ds.localport: " + ds.getLocalPort()
+ ", ds.port: " + ds.getPort() + ", address: " + ds.getInetAddress());
Reciever r = new Reciever(ds);
r.start();
} catch (Exception e) {
e.printStackTrace();
}
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(p, BorderLayout.CENTER);
setSize(640, 480);
setVisible(true);
}
public static void main(String[] args) {
int x = 0;
for (String s : args){
if (x==0){
localport = Integer.parseInt(s);
x++;
}
else if (x==1){
host = s;
x++;
}
else if (x==2){
port = Integer.parseInt(s);
}
}
Draw d = new Draw(localport, host, port);
}
}
class Paper extends JPanel {
DatagramSocket ds;
private HashSet hs = new HashSet();
public Paper(DatagramSocket ds) {
this.ds=ds;
setBackground(Color.white);
addMouseListener(new L1(ds));
addMouseMotionListener(new L2());
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
Iterator i = hs.iterator();
while(i.hasNext()) {
Point p = (Point)i.next();
g.fillOval(p.x, p.y, 2, 2);
}
}
private void addPoint(Point p) {
hs.add(p);
repaint();
}
class L1 extends MouseAdapter {
DatagramSocket ds;
public L1(DatagramSocket ds){
this.ds=ds;
}
public void mousePressed(MouseEvent me) {
addPoint(me.getPoint());
Point p = me.getPoint();
String message = Integer.toString(p.x) + " " + Integer.toString(p.y);
System.out.println(message);
try{
byte[] data = message.getBytes("UTF-8");
//InetAddress ia = InetAddress.getByName(ds.host);
String convertedMessage = new String(data, "UTF-8");
System.out.println("The converted string is " + convertedMessage);
DatagramPacket dp = new DatagramPacket(data, data.length);
System.out.println(ds.getPort());
//System.out.println(message);
//System.out.println(ds.toString());
//ds.send(dp);
/*System.out.println("2Sending a packet containing data: " +data +" to "
+ ia + ":" + d.port + "...");*/
} catch (Exception e){
e.printStackTrace();
}
}
}
class L2 extends MouseMotionAdapter {
public void mouseDragged(MouseEvent me) {
addPoint(me.getPoint());
Point p = me.getPoint();
String message = Integer.toString(p.x) + " " + Integer.toString(p.y);
//System.out.println(message);
}
}
}
class Reciever extends Thread{
DatagramSocket ds;
byte[] buffer;
Reciever(DatagramSocket ds){
this.ds = ds;
buffer = new byte[65507];
}
public void run(){
try {
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while(true){
try {
ds.receive(packet);
String s = new String(packet.getData());
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}