aboutsummaryrefslogtreecommitdiff
path: root/CS2452
diff options
context:
space:
mode:
Diffstat (limited to 'CS2452')
-rw-r--r--CS2452/DictionarySearch.java91
-rw-r--r--CS2452/GUI_network/Gui.java108
-rw-r--r--CS2452/GUI_network/MGui.java92
-rw-r--r--CS2452/GUI_network/SocketReader.java49
-rw-r--r--CS2452/GUI_network/SocketWriter.java56
-rw-r--r--CS2452/Q8.java33
-rw-r--r--CS2452/Skype/src/Skype/Client.java63
-rw-r--r--CS2452/Skype/src/Skype/Gui.java222
-rw-r--r--CS2452/Skype/src/Skype/MGui.java27
-rw-r--r--CS2452/Skype/src/Skype/Server.java88
-rw-r--r--CS2452/Skype/src/Skype/audio.java36
-rw-r--r--CS2452/Skype/src/Skype/mic.java77
-rw-r--r--CS2452/Skype/src/Skype/numberFilter.java48
-rw-r--r--CS2452/Skype/src/Skype/speaker.java90
-rw-r--r--CS2452/assign2/src/P1.java39
-rwxr-xr-xCS2452/assign5/src/Client.java32
-rwxr-xr-xCS2452/assign5/src/ResourceReader.java89
-rwxr-xr-xCS2452/assign5/src/ResourceWriter.java56
-rwxr-xr-xCS2452/assign5/src/Test.java23
-rwxr-xr-xCS2452/assign5/src/WRServer.java59
-rw-r--r--CS2452/chat/ChatClient.java47
-rw-r--r--CS2452/chat/ChatServer.java44
-rw-r--r--CS2452/chatThreaded/ChatClient.java40
-rw-r--r--CS2452/chatThreaded/ChatServer.java27
-rw-r--r--CS2452/chatThreaded/T1.java33
-rw-r--r--CS2452/chatThreaded/T2.java32
-rw-r--r--CS2452/sumofdigits.java18
27 files changed, 1619 insertions, 0 deletions
diff --git a/CS2452/DictionarySearch.java b/CS2452/DictionarySearch.java
new file mode 100644
index 0000000..5d86a91
--- /dev/null
+++ b/CS2452/DictionarySearch.java
@@ -0,0 +1,91 @@
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class DictionarySearch
+{
+ public static String[] dict;
+
+ public static void main(String[] args)
+ {
+ BufferedReader ir = new BufferedReader(new InputStreamReader(System.in));
+ BufferedReader fr = null;
+ try
+ {
+ fr = new BufferedReader(new FileReader("/home/tje/workspace/Recursion/dictionary.wwf"));
+ } catch (FileNotFoundException e1)
+ {
+ e1.printStackTrace();
+ }
+
+ String str = null;
+ dict = new String[0];
+ System.out.println("Dictionary loading...");
+
+ do
+ {
+ try
+ {
+ str = fr.readLine();
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ String[] tmp = new String[dict.length + 1];
+ int i;
+ for (i = 0; i < dict.length; i++ )
+ {
+ tmp[i] = dict[i];
+ }
+ tmp[i] = str;
+ dict = tmp;
+
+ } while (str != null);
+ System.out.println("Dictionary loaded.");
+
+ while (true)
+ {
+ System.out.print("What word would you like to look up? ");
+ try
+ {
+ System.out.println("The closest word is " + check(ir.readLine().toLowerCase(), 0, dict.length));
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+
+
+ }
+ }
+
+ public static String check(String word, int a, int b)
+ {
+ if (a == b -1)
+ {
+ return dict[a];
+ }
+ int mid = (a+b)/2;
+ if(word.compareTo(dict[mid]) > 0)
+ {
+ return check(word, mid, b);
+ }
+
+ if (word.compareTo(dict[mid]) < 0)
+ {
+ return check(word, a, mid);
+ }
+
+ if (word.compareTo(dict[mid]) == 0)
+ {
+ return dict[mid];
+ }
+
+
+ return word;
+
+ }
+} \ No newline at end of file
diff --git a/CS2452/GUI_network/Gui.java b/CS2452/GUI_network/Gui.java
new file mode 100644
index 0000000..2187030
--- /dev/null
+++ b/CS2452/GUI_network/Gui.java
@@ -0,0 +1,108 @@
+package assign6;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.image.*;
+import java.io.*;
+import java.util.concurrent.Semaphore;
+
+import javax.imageio.ImageIO;
+import javax.swing.*;
+
+public class Gui extends JFrame implements ActionListener, MouseListener
+{
+ JPanel panel;
+ JLabel label;
+ BufferedImage image;
+ Color color;
+ Semaphore write;
+ boolean sc;
+
+
+ public Gui(String filename, Color color, Semaphore write, boolean sc)
+ {
+ this.color = color;
+ this.sc = sc;
+
+ panel = new JPanel(new GridLayout(1,1));
+ panel.setBackground(color);
+ try
+ {
+ image = ImageIO.read(new File(filename));
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ label = new JLabel(new ImageIcon(new ImageIcon(image).getImage().getScaledInstance(500, 500, Image.SCALE_DEFAULT)));
+
+ panel.add(label);
+ panel.addMouseListener(this);
+ this.add(panel);
+
+ this.write = write;
+
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+
+ }
+
+ public void mouseClicked(MouseEvent e)
+ {
+ write.release();
+ changeImage();
+ }
+
+
+ public void mouseEntered(MouseEvent e)
+ {
+
+ }
+
+ public void mouseExited(MouseEvent e)
+ {
+
+ }
+
+ public void mousePressed(MouseEvent e)
+ {
+
+ }
+
+ public void mouseReleased(MouseEvent e)
+ {
+
+ }
+
+ public void changeImage()
+ {
+
+ String filename;
+ Color color;
+ if(sc)
+ {
+ filename = "img2.jpg";
+ color = Color.GREEN;
+ }
+ else
+ {
+ filename = "img1.jpg";
+ color = Color.BLUE;
+ }
+
+ try
+ {
+ image = ImageIO.read(new File(filename));
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ label.setIcon(new ImageIcon(new ImageIcon(image).getImage().getScaledInstance(500, 500, Image.SCALE_DEFAULT)));
+
+ panel.setBackground(color);
+ panel.repaint();
+
+ sc = !sc;
+ }
+} \ No newline at end of file
diff --git a/CS2452/GUI_network/MGui.java b/CS2452/GUI_network/MGui.java
new file mode 100644
index 0000000..a0879c6
--- /dev/null
+++ b/CS2452/GUI_network/MGui.java
@@ -0,0 +1,92 @@
+package assign6;
+
+import java.net.*;
+import java.util.concurrent.Semaphore;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import java.io.*;
+
+public class MGui
+{
+
+ public static void main(String[] args)
+ {
+ Gui g = null;
+ Semaphore write = new Semaphore(1);
+ try
+ {
+ write.acquire();
+ } catch (InterruptedException e1)
+ {
+ e1.printStackTrace();
+ }
+ ServerSocket ss;
+ Socket s = null;
+
+ if (args[0].compareTo("server") == 0)
+ {
+ try
+ {
+ ss = new ServerSocket(Integer.parseInt(args[1]));
+ s = ss.accept();
+ } catch (NumberFormatException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ g = new Gui("img1.jpg",Color.BLUE, write,true);
+ g.setSize(1000, 1000);
+ g.setLocation(32, 32);
+ g.setVisible(true);
+ g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ SocketWriter sw = new SocketWriter(s,write);
+
+
+ }
+ else if (args[0].compareTo("client") == 0)
+ {
+
+ InetAddress address = null;
+ int port = 0;
+
+ try
+ {
+ address = InetAddress.getByName(args[1]);
+ port = Integer.parseInt(args[2]);
+
+ } catch (UnknownHostException e)
+ {
+ e.printStackTrace();
+ }
+
+ try
+ {
+ s = new Socket(address, port);
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ g = new Gui("img2.jpg",Color.GREEN,write,false);
+ g.setSize(1000, 1000);
+ g.setLocation(500, 500);
+ g.setVisible(true);
+ g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ SocketWriter sw = new SocketWriter(s,write);
+
+ }
+
+ SocketReader sr = new SocketReader(s,g);
+
+ }
+
+}
diff --git a/CS2452/GUI_network/SocketReader.java b/CS2452/GUI_network/SocketReader.java
new file mode 100644
index 0000000..dacdaf1
--- /dev/null
+++ b/CS2452/GUI_network/SocketReader.java
@@ -0,0 +1,49 @@
+package assign6;
+
+import java.net.*;
+
+import javax.swing.JFrame;
+
+import java.io.*;
+
+public class SocketReader extends Thread
+{
+ BufferedReader br;
+ Gui g;
+ Thread t;
+
+ public SocketReader(Socket s, Gui g)
+ {
+ try
+ {
+ br = new BufferedReader(new InputStreamReader(s.getInputStream()));
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ this.g = g;
+
+ t = new Thread(this);
+ t.start();
+ }
+
+ public void run()
+ {
+ String str = null;
+ while (true)
+ {
+ try
+ {
+ str = br.readLine();
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ if (str != null)
+ g.changeImage();
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/CS2452/GUI_network/SocketWriter.java b/CS2452/GUI_network/SocketWriter.java
new file mode 100644
index 0000000..1d882ab
--- /dev/null
+++ b/CS2452/GUI_network/SocketWriter.java
@@ -0,0 +1,56 @@
+package assign6;
+
+import java.io.*;
+import java.net.*;
+import java.util.concurrent.Semaphore;
+
+public class SocketWriter extends Thread
+{
+ Thread t;
+ BufferedWriter bw;
+ Semaphore write;
+ boolean sc;
+
+ public SocketWriter(Socket s, Semaphore write)
+ {
+ try{
+ this.bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+ }
+ catch(IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ this.write = write;
+
+
+
+ t = new Thread(this);
+ t.start();
+ }
+
+ public void run()
+ {
+
+ while(true)
+ {
+ try
+ {
+ write.acquire();
+ } catch (InterruptedException e1)
+ {
+ e1.printStackTrace();
+ }
+ try
+ {
+ bw.newLine();
+ bw.flush();
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+}
diff --git a/CS2452/Q8.java b/CS2452/Q8.java
new file mode 100644
index 0000000..76c0bcb
--- /dev/null
+++ b/CS2452/Q8.java
@@ -0,0 +1,33 @@
+
+public class Q8
+{
+
+ public static void main(String[] args)
+ {
+ int[] str= new int[(int) Math.ceil(args[0].length()/6.00)];
+
+ args[0] = args[0].toLowerCase();
+
+ while (args[0].length() % 6 != 0)
+ {
+ args[0] = args[0].concat(String.format("%c",'a' + 31));
+ }
+
+ for(int i = 0; i < str.length; i++)
+ {
+ str[i] = 0;
+ for(int j = 0; j < 6; j++)
+ {
+ str[i] <<= 5;
+ str[i] += args[0].charAt(j + (i*6)) - 'a' ;
+ }
+ }
+
+ for(int i = 0; i < str.length; i++)
+ {
+ System.out.printf("%x\n", str[i]);
+ }
+
+ }
+
+}
diff --git a/CS2452/Skype/src/Skype/Client.java b/CS2452/Skype/src/Skype/Client.java
new file mode 100644
index 0000000..f1716fe
--- /dev/null
+++ b/CS2452/Skype/src/Skype/Client.java
@@ -0,0 +1,63 @@
+package Skype;
+
+import java.io.IOException;
+import java.net.*;
+import java.util.concurrent.Semaphore;
+
+public class Client extends Thread
+{
+ Socket s;
+ InetAddress ip;
+ int port;
+ audio aud;
+ Gui g;
+ Semaphore audflg;
+ Semaphore guiflg;
+
+ public Client(Gui g, String ip, String port, audio aud, Semaphore audflg,Semaphore guiflg)
+ {
+ this.aud = aud;
+ this.audflg = audflg;
+ this.guiflg = guiflg;
+ this.g = g;
+
+ try
+ {
+ this.ip = InetAddress.getByName(ip);
+ } catch (UnknownHostException e)
+ {
+ e.printStackTrace();
+ }
+ this.port = Integer.parseInt(port);
+ this.start();
+ }
+
+ public void run()
+ {
+ //System.out.printf("Client Started\n");
+ try
+ {
+ s = new Socket(ip, port);
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ try
+ {
+ audflg.acquire();
+ } catch (InterruptedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ aud.setOpen(true);
+ audflg.release();
+
+ speaker t1 = new speaker(s, audio.getFormat(), aud, audflg,g);
+ mic t2 = new mic(s, audio.getFormat(), g, guiflg);
+
+ t1.start();
+ t2.start();
+ }
+
+}
diff --git a/CS2452/Skype/src/Skype/Gui.java b/CS2452/Skype/src/Skype/Gui.java
new file mode 100644
index 0000000..6e0f0a0
--- /dev/null
+++ b/CS2452/Skype/src/Skype/Gui.java
@@ -0,0 +1,222 @@
+package Skype;
+
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.concurrent.Semaphore;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.text.AbstractDocument;
+
+public class Gui extends JFrame implements ActionListener, ChangeListener
+{
+ JButton call;
+ JCheckBox mute;
+ JSlider volume;
+ JLabel time, ipL, portL, volumeL,ipLH,portLH;
+ JTextField ipT, portT;
+ JPanel panel, ip, volumeP, slider;
+ GridBagConstraints c;
+ Timer timer;
+ int sec;
+
+ boolean incall, servercall;
+
+ Semaphore audflg;
+ Semaphore svrflg;
+ Semaphore guiflg;
+ audio aud;
+
+ public Gui(audio aud, Semaphore svrflg, Semaphore audflg, Semaphore guiflg,int port)
+ {
+ this.guiflg = guiflg;
+ timer = new Timer(1000, this);
+ incall = false;
+ this.svrflg = svrflg;
+ this.audflg = audflg;
+ this.aud = aud;
+
+ c = new GridBagConstraints();
+ c.ipadx = 10;
+ c.ipady = 10;
+
+ panel = new JPanel(new GridBagLayout());
+
+ call = new JButton("Call");
+ call.addActionListener(this);
+
+ //Volume Panel setup
+ volume = new JSlider(SwingConstants.VERTICAL);
+ volume.addChangeListener(this);
+ volume.setPaintTicks(true);
+ volume.setMajorTickSpacing(25);
+ volume.setMinorTickSpacing(5);
+ volume.setPaintTicks(true);
+ volume.setPaintLabels(true);
+
+ volumeL = new JLabel("Volume");
+
+ volumeP = new JPanel();
+ volumeP.setLayout(new GridBagLayout());
+
+ volumeP.add(volume, c);
+ c.gridx = 0;
+ c.gridy = 1;
+ volumeP.add(volumeL, c);
+
+ mute = new JCheckBox("Mute");
+ mute.addActionListener(this);
+ c.gridx = 1;
+ c.gridy = 1;
+ volumeP.add(mute, c);
+ volumeP.setVisible(true);
+
+ //Address setup
+ ipL = new JLabel("IP:");
+ ipT = new JTextField(15);
+ ipT.setText("127.0.0.1");
+ ((AbstractDocument) ipT.getDocument()).setDocumentFilter(new numberFilter());
+ ip = new JPanel(new GridBagLayout());
+ c.gridx = 0;
+ c.gridy = 0;
+ c.anchor = GridBagConstraints.EAST;
+ ip.add(ipL, c);
+ c.gridx = 1;
+
+ c.anchor = GridBagConstraints.WEST;
+ ip.add(ipT, c);
+
+ portL = new JLabel("Port:");
+ portT = new JTextField(5);
+ portT.setText("7777");
+ ((AbstractDocument) portT.getDocument()).setDocumentFilter(new numberFilter());
+ c.gridy = 1;
+ c.anchor = GridBagConstraints.WEST;
+ ip.add(portT, c);
+ c.gridx = 0;
+ c.anchor = GridBagConstraints.EAST;
+ ip.add(portL, c);
+
+ try
+ {
+ ipLH = new JLabel("Your IP: ".concat(InetAddress.getLocalHost().getHostAddress().toString()));
+ } catch (UnknownHostException e)
+ {
+ e.printStackTrace();
+ }
+ portLH = new JLabel("Your Port: ".concat(Integer.toString(port)));
+
+
+ c.anchor = GridBagConstraints.WEST;
+ c.gridy = 2;
+ c.gridx = 1;
+ ip.add(ipLH,c);
+ c.gridy++;
+ ip.add(portLH,c);
+
+ time = new JLabel("TIME");
+
+ c.gridx = 0;
+ c.gridy = 0;
+ c.anchor = GridBagConstraints.NORTHWEST;
+ panel.add(ip, c);
+ c.gridx = 1;
+ panel.add(volumeP, c);
+ c.gridy = 1;
+ c.anchor = GridBagConstraints.CENTER;
+ panel.add(call, c);
+ c.gridx = 0;
+ panel.add(time, c);
+ panel.setVisible(true);
+
+ this.add(panel);
+
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ try
+ {
+ guiflg.acquire();
+
+ if (e.getSource() == mute)
+ {
+ if (mute.isSelected())
+ {
+ volume.setEnabled(false);
+ aud.setVolume(0);
+ }
+ else
+ {
+ volume.setEnabled(true);
+ aud.setVolume(volume.getValue());
+ }
+ }
+ else if (e.getSource() == call)
+ {
+ if (incall)
+ {
+ call.setText("Call");
+ timer.stop();
+ //System.out.println("Hung up");
+ incall = false;
+ try
+ {
+ audflg.acquire();
+ } catch (InterruptedException e1)
+ {
+ e1.printStackTrace();
+ }
+ //System.out.println("False");
+ aud.setOpen(false);
+ audflg.release();
+ svrflg.release(); //allow server to accept connections again.
+ }
+ else
+ {
+ call.setText("Hang up");
+ sec = 0;
+ timer.start();
+ Client c = new Client(this, ipT.getText(), portT.getText(), aud, audflg,guiflg);
+ //System.out.printf("IP: %s, Port: %s\n", ipT.getText(), portT.getText());
+ incall = true;
+
+ }
+ }
+ else if ((e.getSource() == timer) && incall)
+ {
+ sec++ ;
+ if (sec < 60 * 60) time.setText(String.format("%02d:%02d", sec / 60, sec % 60));
+ else time.setText(String.format("%d:%02d:%02d", sec / (60 * 60), (sec / 60) % 60, sec % 60));
+ }
+ } catch (InterruptedException e2)
+ {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ }
+ guiflg.release();
+
+ }
+
+ public void stateChanged(ChangeEvent e)
+ {
+ if (e.getSource() == volume)
+ {
+ if (audflg.tryAcquire())
+ {
+ aud.setVolume(volume.getValue());
+ //change volume .getValue();
+ audflg.release();
+ }
+
+ }
+ }
+
+}
diff --git a/CS2452/Skype/src/Skype/MGui.java b/CS2452/Skype/src/Skype/MGui.java
new file mode 100644
index 0000000..c545ffe
--- /dev/null
+++ b/CS2452/Skype/src/Skype/MGui.java
@@ -0,0 +1,27 @@
+package Skype;
+
+import java.util.concurrent.Semaphore;
+
+import javax.swing.JFrame;
+
+public class MGui
+{
+ public static void main(String[] args)
+ {
+ audio aud = new audio(50);
+ Semaphore volflg = new Semaphore(1);
+ Semaphore svrflg = new Semaphore(1);
+ Semaphore guiflg = new Semaphore(1);
+
+ int port = 7777;
+
+ Gui g = new Gui(aud,svrflg,volflg,guiflg,port);
+ g.setSize(500, 500);
+ g.setLocation(32, 32);
+ g.setVisible(true);
+ g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ Server server = new Server(g, port,aud,svrflg,volflg,guiflg);
+ }
+
+}
diff --git a/CS2452/Skype/src/Skype/Server.java b/CS2452/Skype/src/Skype/Server.java
new file mode 100644
index 0000000..e8b8a0b
--- /dev/null
+++ b/CS2452/Skype/src/Skype/Server.java
@@ -0,0 +1,88 @@
+package Skype;
+
+import java.io.IOException;
+import java.net.*;
+import java.util.concurrent.Semaphore;
+
+public class Server extends Thread
+{
+ ServerSocket ss;
+ Socket s;
+ int port;
+ Gui g;
+ audio aud;
+ Semaphore svrflg;
+ Semaphore audflg;
+ Semaphore guiflg;
+
+ public Server(Gui g, int port, audio aud, Semaphore svrflg, Semaphore audflg, Semaphore guiflg)
+ {
+ this.guiflg = guiflg;
+ this.audflg = audflg;
+ this.svrflg = svrflg;
+ this.aud = aud;
+ this.port = port;
+ this.g = g;
+ try
+ {
+ this.ss = new ServerSocket(port);
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+
+ this.start();
+
+ }
+
+ public void run()
+ {
+ while (true)
+ {
+ //System.out.printf("Server is waiting\n");
+ try
+ {
+ svrflg.acquire();
+ //System.out.println(ss);
+ s = ss.accept();
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+
+ try
+ {
+ audflg.acquire();
+ } catch (InterruptedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ aud.setOpen(true);
+ audflg.release();
+ //System.out.println("ServerSpeaker");
+ speaker t1 = new speaker(s, audio.getFormat(), aud, audflg,g);
+ mic t2 = new mic(s, audio.getFormat(),g,guiflg);
+ try
+ {
+ guiflg.acquire();
+ g.call.setText("Hang up");
+ g.sec = 0;
+ g.timer.start();
+ g.incall = true;
+ guiflg.release();
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+
+ t1.start();
+ t2.start();
+
+ }
+ }
+
+} \ No newline at end of file
diff --git a/CS2452/Skype/src/Skype/audio.java b/CS2452/Skype/src/Skype/audio.java
new file mode 100644
index 0000000..d9181fd
--- /dev/null
+++ b/CS2452/Skype/src/Skype/audio.java
@@ -0,0 +1,36 @@
+package Skype;
+
+import java.net.Socket;
+
+import javax.sound.sampled.AudioFormat;
+
+public class audio
+{
+ double vol;
+ boolean open;
+
+ audio(int vol)
+ {
+ this.vol = vol / 100.00;
+ }
+
+ public static AudioFormat getFormat()
+ {
+ float sampleRate = 8000;
+ int sampleSizeInBits = 8;
+ int channels = 1;
+ boolean signed = true;
+ boolean bigEndian = true;
+ return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
+ }
+
+ public void setVolume(int volume)
+ {
+ vol = volume / 100.00;
+ }
+
+ public void setOpen(boolean a){
+ open = a;
+ }
+
+} \ No newline at end of file
diff --git a/CS2452/Skype/src/Skype/mic.java b/CS2452/Skype/src/Skype/mic.java
new file mode 100644
index 0000000..01cadfd
--- /dev/null
+++ b/CS2452/Skype/src/Skype/mic.java
@@ -0,0 +1,77 @@
+package Skype;
+
+import java.util.*;
+import java.util.concurrent.Semaphore;
+
+import javax.sound.sampled.*;
+
+import java.io.*;
+import java.net.*;
+
+class mic extends Thread
+{
+ Socket s;
+ AudioFormat format;
+ Gui g;
+ Semaphore guiflg;
+
+ public mic(Socket socket, AudioFormat format, Gui g, Semaphore guiflg)
+ {
+ s = socket;
+ this.format = format;
+ this.g = g;
+ this.guiflg = guiflg;
+ }
+
+ public void run()
+ {
+ BufferedOutputStream bout = null;
+ try
+ {
+ DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
+ final TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);
+
+ line.open(format, 1024);
+ line.start();
+ int bufferSize = 32;
+ byte buffer[] = new byte[bufferSize];
+ try
+ {
+ bout = new BufferedOutputStream(s.getOutputStream());
+
+ //System.out.printf("mic started\n");
+ while (true)
+ {
+ int count = line.read(buffer, 0, buffer.length);
+
+ if (count > 0) bout.write(buffer, 0, count);
+
+ bout.flush();
+ }
+ }catch (SocketException se)
+ {
+ try
+ {
+ guiflg.acquire();
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+
+ g.call.setText("Call");
+ g.incall = false;
+ guiflg.release();
+
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ } catch (LineUnavailableException e1)
+ {
+ e1.printStackTrace();
+ }
+ }
+
+}
diff --git a/CS2452/Skype/src/Skype/numberFilter.java b/CS2452/Skype/src/Skype/numberFilter.java
new file mode 100644
index 0000000..def1b3e
--- /dev/null
+++ b/CS2452/Skype/src/Skype/numberFilter.java
@@ -0,0 +1,48 @@
+package Skype;
+
+import java.awt.Toolkit;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DocumentFilter;
+
+class numberFilter extends DocumentFilter
+{
+ @Override
+ public void insertString(DocumentFilter.FilterBypass fp, int offset, String string,AttributeSet aset) throws BadLocationException
+ {
+ int len = string.length();
+ boolean isValidInteger = true;
+
+ for (int i = 0; i < len; i++ )
+ {
+ if (!Character.isDigit(string.charAt(i)) && string.charAt(i) != '.')
+ {
+ isValidInteger = false;
+ break;
+ }
+ }
+ if (isValidInteger) super.insertString(fp, offset, string, aset);
+ else
+ Toolkit.getDefaultToolkit().beep();
+ }
+
+ public void replace(DocumentFilter.FilterBypass fp, int offset, int length, String string, AttributeSet aset) throws BadLocationException
+ {
+ int len = string.length();
+ boolean isValidInteger = true;
+
+ for (int i = 0; i < len; i++)
+ {
+ if (!Character.isDigit(string.charAt(i)) && string.charAt(i) != '.')
+ {
+ isValidInteger = false;
+ break;
+ }
+ }
+ if (isValidInteger)
+ super.replace(fp, offset, length, string, aset);
+ else
+ Toolkit.getDefaultToolkit().beep();
+ }
+} \ No newline at end of file
diff --git a/CS2452/Skype/src/Skype/speaker.java b/CS2452/Skype/src/Skype/speaker.java
new file mode 100644
index 0000000..596986f
--- /dev/null
+++ b/CS2452/Skype/src/Skype/speaker.java
@@ -0,0 +1,90 @@
+package Skype;
+
+import java.util.*;
+import java.util.concurrent.Semaphore;
+import java.io.*;
+import java.net.*;
+import javax.sound.sampled.*;
+
+class speaker extends Thread
+{
+ Socket s;
+ AudioFormat format;
+ audio aud;
+ Semaphore flg;
+ Gui g;
+
+ public speaker(Socket socket, AudioFormat format, audio aud, Semaphore audflg, Gui g)
+ {
+ this.g = g;
+ this.aud = aud;
+ this.flg = audflg;
+ s = socket;
+ this.format = format;
+ }
+
+ public void run()
+ {
+ try
+ {
+ DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
+ final SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
+ line.open(format, 1024);
+ line.start();
+
+ final AudioInputStream ais = new AudioInputStream(s.getInputStream(), format, 2000000);
+ int count;
+ int bufferSize = (int) format.getSampleRate() * format.getFrameSize();
+ byte buffer[] = new byte[bufferSize];
+
+ //System.out.printf("speakers started\n");
+ while (((count = ais.read(buffer, 0, buffer.length)) != -1) && aud.open)
+ {
+ flg.release();
+ if (count > 0)
+ {
+ if (flg.tryAcquire())
+ {
+
+ for (int i = 0; i < buffer.length; i++ )
+ {
+ buffer[i] *= aud.vol;
+ }
+ flg.release();
+ }
+
+ line.write(buffer, 0, count);
+ }
+
+ }
+ line.drain();
+ line.close();
+ } catch (IOException e)
+ {
+ System.err.println("I/O problems: " + e);
+
+ } catch (LineUnavailableException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ try
+ {
+ flg.acquire();
+ } catch (InterruptedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ //System.out.println("out of while");
+ try
+ {
+ s.close();
+ //System.out.println("S closed");
+ } catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/CS2452/assign2/src/P1.java b/CS2452/assign2/src/P1.java
new file mode 100644
index 0000000..3580cf9
--- /dev/null
+++ b/CS2452/assign2/src/P1.java
@@ -0,0 +1,39 @@
+import java.io.*;
+
+class P1
+{
+
+ public static void main(String[] args)
+ {
+ String str = null;
+ BufferedReader br;
+ br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = null;
+
+ try
+ {
+ File file = new File(args[0]);
+
+ if (! file.exists())
+ {
+ file.createNewFile();
+ }
+
+ bw = new BufferedWriter(new FileWriter(file));
+ while(true)
+ {
+ str = br.readLine();
+ bw.write(str);
+ bw.newLine();
+ bw.flush();
+ }
+ } catch(Exception e)
+ {
+ System.out.printf("Unable to write to file %s\n", args[0]);
+ }
+
+
+
+
+ }
+}
diff --git a/CS2452/assign5/src/Client.java b/CS2452/assign5/src/Client.java
new file mode 100755
index 0000000..9d7cb19
--- /dev/null
+++ b/CS2452/assign5/src/Client.java
@@ -0,0 +1,32 @@
+import java.net.*;
+import java.io.*;
+
+class Client
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ byte b = 0;
+ int cnt = 0;
+ Socket s = new Socket(args[0], Integer.parseInt(args[1]));
+ DataInputStream di = new DataInputStream(s.getInputStream());
+ while (true)
+ {
+ b = di.readByte();
+ System.out.printf("%d - %d\t%x\t%c\n", ++cnt, b, b, b);
+ if ((cnt % (1024 * 1024)) == 0)
+ {
+ System.out.println("------MILLION------\n\n");
+ cnt = 0;
+ Thread.sleep(1000);
+ di.close();
+ return;
+ }
+ }
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/CS2452/assign5/src/ResourceReader.java b/CS2452/assign5/src/ResourceReader.java
new file mode 100755
index 0000000..f9f0f71
--- /dev/null
+++ b/CS2452/assign5/src/ResourceReader.java
@@ -0,0 +1,89 @@
+import java.io.*;
+import java.util.concurrent.Semaphore;
+
+public class ResourceReader implements Runnable
+{
+ public static double cor = 0;
+ public static Semaphore flg1 = new Semaphore(1);
+
+ Thread t;
+ byte[] res = null, sentinel = null;
+ DataOutputStream dout = null;
+ Semaphore flg = null;
+ Semaphore flg2 = null;
+
+ ResourceReader(DataOutputStream dot, byte[] r, Semaphore s, Semaphore s2)
+ {
+ res = r;
+ dout = dot;
+ flg = s;
+ flg2 = s2;
+ sentinel = new byte[32768];
+ for (int i = 0; i < sentinel.length; i++ )
+ sentinel[i] = 65;
+ t = new Thread(this, "ResourceReader");
+ t.start();
+ }
+
+ public void run()
+ {
+ int i;
+ byte value = 33;
+ boolean running = true;
+
+ System.out.println("ResourceReader: starts");
+ while (running)
+ {
+ try
+ {
+
+ flg2.acquire();
+ flg2.release();
+ flg1.acquire();
+ if (cor == 0)
+ {
+ flg.acquire();
+ cor++ ;
+ flg1.release();
+ for (int j = 0; j < 50; j++ )
+ dout.write(res, 0, res.length);
+ dout.write(sentinel, 0, sentinel.length);
+ flg.release();
+ }
+ else
+ {
+ cor++ ;
+ flg1.release();
+ for (int j = 0; j < 50; j++ )
+ dout.write(res, 0, res.length);
+ dout.write(sentinel, 0, sentinel.length);
+ }
+ flg1.acquire();
+ cor-- ;
+ flg1.release();
+
+ System.out.println("ResourceReader: sent a bunch");
+ Thread.sleep(100);
+ running = false;
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ try
+ {
+ dout.close();
+ } catch (Exception e2)
+ {
+ }
+ return;
+ }
+ }
+ System.out.println("ResourceReader: ends");
+ try
+ {
+ dout.close();
+ } catch (Exception e2)
+ {
+ }
+
+ }
+}
diff --git a/CS2452/assign5/src/ResourceWriter.java b/CS2452/assign5/src/ResourceWriter.java
new file mode 100755
index 0000000..2fb0967
--- /dev/null
+++ b/CS2452/assign5/src/ResourceWriter.java
@@ -0,0 +1,56 @@
+import java.util.concurrent.Semaphore;
+
+public class ResourceWriter implements Runnable
+{
+ Thread t;
+ byte[] res = null;
+ Semaphore flg = null;
+ Semaphore flg2 = null;
+
+ ResourceWriter(byte[] r, Semaphore s, Semaphore s2)
+ {
+ res = r;
+ flg = s;
+ flg2 = s2;
+ t = new Thread(this, "ResourceWriter");
+ t.start();
+ }
+
+ public void run()
+ {
+ int i;
+ byte value = 33;
+ boolean running = true;
+
+ System.out.println("ResourceWriter: starts");
+ while (running)
+ {
+ System.out.println("RW in while");
+ try
+ {
+ flg2.acquire();
+ flg.acquire();
+
+ for (i = 0; i < res.length; i++ )
+ res[i] = value;
+ flg.release();
+ flg2.release();
+ } catch (Exception e0)
+ {
+ e0.printStackTrace();
+ }
+
+ value++ ;
+ if (value == 100) value = 33;
+ System.out.println("ResourceWriter: updated, waiting 15, 14, ...");
+ try
+ {
+ Thread.sleep(15000);
+ } catch (Exception e)
+ {
+ }
+ }
+ System.out.println("ResourceWriter: ends");
+
+ }
+}
diff --git a/CS2452/assign5/src/Test.java b/CS2452/assign5/src/Test.java
new file mode 100755
index 0000000..ed6234c
--- /dev/null
+++ b/CS2452/assign5/src/Test.java
@@ -0,0 +1,23 @@
+class Test
+{
+ public static void main(String[] args)
+ {
+ try
+ {
+ if (args.length != 1)
+ {
+ System.out.println("usage: java Test listeningPort");
+ System.exit(1);
+ }
+ System.out.println("Test progam starts");
+
+ WRServer server = new WRServer(Integer.parseInt(args[0]));
+ server.t.join();
+
+ System.out.println("Test progam ends");
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+} \ No newline at end of file
diff --git a/CS2452/assign5/src/WRServer.java b/CS2452/assign5/src/WRServer.java
new file mode 100755
index 0000000..eadddc3
--- /dev/null
+++ b/CS2452/assign5/src/WRServer.java
@@ -0,0 +1,59 @@
+import java.io.*;
+import java.net.*;
+import java.util.concurrent.Semaphore;
+
+class WRServer implements Runnable
+{
+ int port;
+ Thread t;
+ byte[] theSharedResource = null;
+ Semaphore flg = null;
+ Semaphore flg2 = null;
+
+ WRServer(int p)
+ {
+ port = p;
+ theSharedResource = new byte[1024 * 1024];
+ flg = new Semaphore(1);
+ flg2 = new Semaphore(2);
+ t = new Thread(this, "WRServer");
+ t.start();
+ }
+
+ public void run()
+ {
+ ServerSocket ss = null;
+ Socket s = null;
+ DataOutputStream dout = null;
+ boolean running = true;
+ System.out.println("WRServer is alive");
+
+ ResourceWriter rw = new ResourceWriter(theSharedResource, flg, flg2);
+
+ try
+ {
+ ss = new ServerSocket(port);
+ } catch (Exception e0)
+ {
+ e0.printStackTrace();
+ }
+
+ while (running)
+ {
+ try
+ {
+ System.out.println("WRServer: waiting for incoming connection");
+ s = ss.accept();
+ System.out.println("WRServer: received incoming connection");
+
+ dout = new DataOutputStream(s.getOutputStream());
+ ResourceReader rr = new ResourceReader(dout, theSharedResource, flg, flg2);
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ System.out.println("WRServer is finished");
+ }
+}
diff --git a/CS2452/chat/ChatClient.java b/CS2452/chat/ChatClient.java
new file mode 100644
index 0000000..816d097
--- /dev/null
+++ b/CS2452/chat/ChatClient.java
@@ -0,0 +1,47 @@
+import java.util.*;
+import java.io.*;
+import java.net.*;
+
+class ChatClient
+{
+ public static void main(String[] args)
+ {
+ Socket s;
+ BufferedReader br, tr;
+ BufferedWriter bw;
+ InetAddress address = null;
+ int port = 0;
+
+ tr = new BufferedReader(new InputStreamReader(System.in));
+
+ try{
+ address = InetAddress.getByName(args[0]);
+ port = Integer.parseInt(args[1]);
+ }catch (UnknownHostException ex)
+ {
+ ex.printStackTrace();
+ }
+
+ try
+ {
+ System.out.printf("Connecting...\n");
+ s = new Socket(address, port);
+
+ br = new BufferedReader(new InputStreamReader(s.getInputStream()));
+
+ bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+ System.out.printf("Client>");
+
+ while(true)
+ {
+ bw.write(tr.readLine());
+ bw.newLine();
+ bw.flush();
+ System.out.printf("%s: %s\n%s>", "Server", br.readLine(), "Client");
+ }
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/CS2452/chat/ChatServer.java b/CS2452/chat/ChatServer.java
new file mode 100644
index 0000000..3259611
--- /dev/null
+++ b/CS2452/chat/ChatServer.java
@@ -0,0 +1,44 @@
+import java.io.*;
+import java.util.*;
+import java.net.*;
+
+class ChatServer
+{
+ public static void main(String[] args)
+ {
+ ServerSocket ss;
+ Socket s;
+ BufferedReader br, tr;
+ BufferedWriter bw;
+
+ tr = new BufferedReader(new InputStreamReader(System.in));
+
+ try
+ {
+ ss = new ServerSocket(2452);
+
+ s = ss.accept();
+ System.out.printf("Client connected...\n");
+
+
+ br = new BufferedReader(new InputStreamReader(s.getInputStream()));
+ bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+
+ //String[] address = new String[2];
+ //address[0] = InetAddress.toString(s.getAddress());
+ //address[1] = InetAddress.toString(s.getLocalAddress());
+
+ while(true)
+ {
+ System.out.printf("%s: %s\n%s>", "Client", br.readLine(), "Server");
+ bw.write(tr.readLine());
+ bw.newLine();
+ bw.flush();
+ }
+
+ }catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/CS2452/chatThreaded/ChatClient.java b/CS2452/chatThreaded/ChatClient.java
new file mode 100644
index 0000000..1822240
--- /dev/null
+++ b/CS2452/chatThreaded/ChatClient.java
@@ -0,0 +1,40 @@
+import java.util.*;
+import java.io.*;
+import java.net.*;
+
+
+
+class ChatClient
+{
+ public static void main(String[] args)
+ {
+ Socket s;
+ InetAddress address = null;
+ int port = 0;
+
+
+
+ try
+ {
+ address = InetAddress.getByName(args[0]);
+ port = Integer.parseInt(args[1]);
+ }catch (UnknownHostException ex){
+ ex.printStackTrace();
+ }
+
+ try
+ {
+ s = new Socket(address, port);
+
+ T1 screenWriter = new T1(s);
+ T2 socketWriter = new T2(s);
+ screenWriter.start();
+ socketWriter.start();
+
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/CS2452/chatThreaded/ChatServer.java b/CS2452/chatThreaded/ChatServer.java
new file mode 100644
index 0000000..67608d1
--- /dev/null
+++ b/CS2452/chatThreaded/ChatServer.java
@@ -0,0 +1,27 @@
+import java.util.*;
+import java.io.*;
+import java.net.*;
+
+class ChatServer
+{
+ public static void main(String[] args)
+ {
+ ServerSocket ss;
+ Socket s;
+
+ try
+ {
+ ss = new ServerSocket(2452);
+ s = ss.accept();
+
+ T1 screenWriter = new T1(s);
+ T2 socketWriter = new T2(s);
+ screenWriter.start();
+ socketWriter.start();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/CS2452/chatThreaded/T1.java b/CS2452/chatThreaded/T1.java
new file mode 100644
index 0000000..6fd8e06
--- /dev/null
+++ b/CS2452/chatThreaded/T1.java
@@ -0,0 +1,33 @@
+import java.util.*;
+import java.io.*;
+import java.net.*;
+
+
+class T1 extends Thread
+{
+ Socket s;
+
+ public T1(Socket socket)
+ {
+ s = socket;
+ }
+ public void run()
+ {
+ BufferedReader tr = new BufferedReader(new InputStreamReader(System.in));
+
+ try
+ {
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
+
+ while(true)
+ {
+ bw.write(tr.readLine());
+ bw.newLine();
+ bw.flush();
+ }
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ }
+}
+
diff --git a/CS2452/chatThreaded/T2.java b/CS2452/chatThreaded/T2.java
new file mode 100644
index 0000000..470c917
--- /dev/null
+++ b/CS2452/chatThreaded/T2.java
@@ -0,0 +1,32 @@
+
+import java.util.*;
+import java.io.*;
+import java.net.*;
+
+
+class T2 extends Thread
+{
+ Socket s;
+ public T2(Socket socket)
+ {
+ s = socket;
+ }
+ public void run()
+ {
+
+ try
+ {
+
+ BufferedReader bw = new BufferedReader( new InputStreamReader(s.getInputStream()));
+ String str = "Connected";
+ do
+ {
+ System.out.printf("%s\n", str);
+ str = bw.readLine();
+ }while (str != null);
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+ }
+}
+
diff --git a/CS2452/sumofdigits.java b/CS2452/sumofdigits.java
new file mode 100644
index 0000000..24d4b69
--- /dev/null
+++ b/CS2452/sumofdigits.java
@@ -0,0 +1,18 @@
+
+public class sumofdigits
+{
+ public static void main(String[] args)
+ {
+ System.out.print(sum(23657));
+ }
+
+ public static int sum(int num)
+ {
+ if(num == 0)
+ {
+ return 0;
+ }
+ return (num % 10) + sum(num/10);
+ }
+
+}