about summary refs log tree commit diff stats
path: root/client
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2008-07-28 10:00:25 +0000
committerKelly Rauchenberger <fefferburbia@gmail.com>2008-07-28 10:00:25 +0000
commit8b426229b9f0d7b360e487871930b682f104dd9f (patch)
treefece686441010520e56ca90ac5945668efe7758b /client
parent35ac16bdff38d75ab22b82ca0017db03506da23b (diff)
downloadinstadisc-8b426229b9f0d7b360e487871930b682f104dd9f.tar.gz
instadisc-8b426229b9f0d7b360e487871930b682f104dd9f.tar.bz2
instadisc-8b426229b9f0d7b360e487871930b682f104dd9f.zip
Added listening server
The Client now listens for connections on port 4444, allowing multiple connections at once. Once a connection iis found, the Cliet waits until the connecton is broken, then downloads the sent dat, parses it into headers and passes it to the Item class.
Diffstat (limited to 'client')
-rw-r--r--client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java114
-rw-r--r--client/trunk/src/com/fourisland/instadisc/InstaDiscView.form29
-rw-r--r--client/trunk/src/com/fourisland/instadisc/InstaDiscView.java20
-rw-r--r--client/trunk/src/com/fourisland/instadisc/Item/Item.java27
4 files changed, 184 insertions, 6 deletions
diff --git a/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java b/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java new file mode 100644 index 0000000..69a8e49 --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java
@@ -0,0 +1,114 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package com.fourisland.instadisc;
6
7import com.fourisland.instadisc.Item.Item;
8import java.io.IOException;
9import java.io.InputStream;
10import java.net.ServerSocket;
11import java.net.Socket;
12import java.util.HashMap;
13import java.util.logging.Level;
14import java.util.logging.Logger;
15
16/**
17 *
18 * @author hatkirby
19 */
20public class InstaDiscThread implements Runnable {
21
22 boolean cancelled = false;
23
24 public void cancel() {
25 cancelled = true;
26 }
27
28 public void run() {
29 try {
30 ServerSocket svr = new ServerSocket();
31 java.net.InetSocketAddress addr = new java.net.InetSocketAddress(4444);
32 svr.bind(addr);
33 while (!cancelled) {
34 try {
35 Socket s = svr.accept();
36 HandleItemThread hit = new HandleItemThread(s);
37 Thread hitt = new Thread(hit);
38 hitt.start();
39 } catch (Exception ex) {
40 cancel();
41 Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex);
42 }
43 }
44 svr.close();
45 } catch (IOException ex) {
46 Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex);
47 }
48
49 }
50}
51
52class HandleItemThread implements Runnable {
53
54 Socket s;
55
56 public HandleItemThread(Socket s) {
57 this.s = s;
58 }
59
60 public void run() {
61 try {
62 InputStream is = s.getInputStream();
63 int buffer[] = new int[1000];
64 int rs = 0;
65 int i = 0;
66
67 while (rs != -1) {
68 try {
69 rs = is.read();
70
71 if (rs != -1) {
72 buffer[i] = rs;
73 }
74 i++;
75 } catch (IOException ex) {
76 Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex);
77 }
78 }
79
80 StringBuilder result = new StringBuilder();
81 int j = 0;
82 for (j = 0; j < i; j++) {
83 result.append(Character.toString((char) buffer[j]));
84 }
85
86 String[] headers = result.toString().split("\n");
87 HashMap<String, String> headerMap = new HashMap<String, String>();
88 i = 0;
89 while (1 == 1) {
90 try {
91 String[] nameVal = headers[i].split(": ");
92 String name = nameVal[0];
93 String value = nameVal[1];
94 headerMap.put(name, value);
95 } catch (Exception ex) {
96 break;
97 }
98 i++;
99 }
100
101 Logger.getLogger(HandleItemThread.class.getName()).log(Level.INFO, headerMap.toString());
102 try {
103 s.close();
104 } catch (IOException ex) {
105 Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex);
106 }
107
108 Item idI = new Item(headerMap);
109 idI.start();
110 } catch (IOException ex) {
111 Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex);
112 }
113 }
114}
diff --git a/client/trunk/src/com/fourisland/instadisc/InstaDiscView.form b/client/trunk/src/com/fourisland/instadisc/InstaDiscView.form index 90b1160..bb3cc48 100644 --- a/client/trunk/src/com/fourisland/instadisc/InstaDiscView.form +++ b/client/trunk/src/com/fourisland/instadisc/InstaDiscView.form
@@ -10,15 +10,38 @@
10 <Layout> 10 <Layout>
11 <DimensionLayout dim="0"> 11 <DimensionLayout dim="0">
12 <Group type="103" groupAlignment="0" attributes="0"> 12 <Group type="103" groupAlignment="0" attributes="0">
13 <EmptySpace min="0" pref="400" max="32767" attributes="0"/> 13 <Component id="jScrollPane1" alignment="0" pref="400" max="32767" attributes="0"/>
14 </Group> 14 </Group>
15 </DimensionLayout> 15 </DimensionLayout>
16 <DimensionLayout dim="1"> 16 <DimensionLayout dim="1">
17 <Group type="103" groupAlignment="0" attributes="0"> 17 <Group type="103" groupAlignment="0" attributes="0">
18 <EmptySpace min="0" pref="252" max="32767" attributes="0"/> 18 <Component id="jScrollPane1" alignment="0" pref="244" max="32767" attributes="0"/>
19 </Group> 19 </Group>
20 </DimensionLayout> 20 </DimensionLayout>
21 </Layout> 21 </Layout>
22 <SubComponents>
23 <Container class="javax.swing.JScrollPane" name="jScrollPane1">
24 <Properties>
25 <Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
26 </Properties>
27 <AuxValues>
28 <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
29 </AuxValues>
30
31 <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
32 <SubComponents>
33 <Component class="javax.swing.JList" name="jList1">
34 <Properties>
35 <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
36 <StringArray count="0"/>
37 </Property>
38 <Property name="selectionMode" type="int" value="0"/>
39 <Property name="name" type="java.lang.String" value="jList1" noResource="true"/>
40 </Properties>
41 </Component>
42 </SubComponents>
43 </Container>
44 </SubComponents>
22 </Container> 45 </Container>
23 <Container class="javax.swing.JMenuBar" name="menuBar"> 46 <Container class="javax.swing.JMenuBar" name="menuBar">
24 <Properties> 47 <Properties>
@@ -91,7 +114,7 @@
91 <Group type="102" alignment="0" attributes="0"> 114 <Group type="102" alignment="0" attributes="0">
92 <EmptySpace max="-2" attributes="0"/> 115 <EmptySpace max="-2" attributes="0"/>
93 <Component id="statusMessageLabel" min="-2" max="-2" attributes="0"/> 116 <Component id="statusMessageLabel" min="-2" max="-2" attributes="0"/>
94 <EmptySpace pref="226" max="32767" attributes="0"/> 117 <EmptySpace pref="214" max="32767" attributes="0"/>
95 <Component id="progressBar" min="-2" max="-2" attributes="0"/> 118 <Component id="progressBar" min="-2" max="-2" attributes="0"/>
96 <EmptySpace max="-2" attributes="0"/> 119 <EmptySpace max="-2" attributes="0"/>
97 <Component id="statusAnimationLabel" min="-2" max="-2" attributes="0"/> 120 <Component id="statusAnimationLabel" min="-2" max="-2" attributes="0"/>
diff --git a/client/trunk/src/com/fourisland/instadisc/InstaDiscView.java b/client/trunk/src/com/fourisland/instadisc/InstaDiscView.java index 3b4daf4..d43589a 100644 --- a/client/trunk/src/com/fourisland/instadisc/InstaDiscView.java +++ b/client/trunk/src/com/fourisland/instadisc/InstaDiscView.java
@@ -79,6 +79,10 @@ public class InstaDiscView extends FrameView {
79 } 79 }
80 } 80 }
81 }); 81 });
82
83 InstaDiscThread idt = new InstaDiscThread();
84 Thread idtt = new Thread(idt);
85 idtt.start();
82 } 86 }
83 87
84 @Action 88 @Action
@@ -100,6 +104,8 @@ public class InstaDiscView extends FrameView {
100 private void initComponents() { 104 private void initComponents() {
101 105
102 mainPanel = new javax.swing.JPanel(); 106 mainPanel = new javax.swing.JPanel();
107 jScrollPane1 = new javax.swing.JScrollPane();
108 jList1 = new javax.swing.JList();
103 menuBar = new javax.swing.JMenuBar(); 109 menuBar = new javax.swing.JMenuBar();
104 javax.swing.JMenu fileMenu = new javax.swing.JMenu(); 110 javax.swing.JMenu fileMenu = new javax.swing.JMenu();
105 javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); 111 javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
@@ -113,15 +119,21 @@ public class InstaDiscView extends FrameView {
113 119
114 mainPanel.setName("mainPanel"); // NOI18N 120 mainPanel.setName("mainPanel"); // NOI18N
115 121
122 jScrollPane1.setName("jScrollPane1"); // NOI18N
123
124 jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
125 jList1.setName("jList1"); // NOI18N
126 jScrollPane1.setViewportView(jList1);
127
116 javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); 128 javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
117 mainPanel.setLayout(mainPanelLayout); 129 mainPanel.setLayout(mainPanelLayout);
118 mainPanelLayout.setHorizontalGroup( 130 mainPanelLayout.setHorizontalGroup(
119 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 131 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
120 .addGap(0, 400, Short.MAX_VALUE) 132 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
121 ); 133 );
122 mainPanelLayout.setVerticalGroup( 134 mainPanelLayout.setVerticalGroup(
123 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 135 mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
124 .addGap(0, 252, Short.MAX_VALUE) 136 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE)
125 ); 137 );
126 138
127 menuBar.setName("menuBar"); // NOI18N 139 menuBar.setName("menuBar"); // NOI18N
@@ -165,7 +177,7 @@ public class InstaDiscView extends FrameView {
165 .addGroup(statusPanelLayout.createSequentialGroup() 177 .addGroup(statusPanelLayout.createSequentialGroup()
166 .addContainerGap() 178 .addContainerGap()
167 .addComponent(statusMessageLabel) 179 .addComponent(statusMessageLabel)
168 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 226, Short.MAX_VALUE) 180 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 214, Short.MAX_VALUE)
169 .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 181 .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
170 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 182 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
171 .addComponent(statusAnimationLabel) 183 .addComponent(statusAnimationLabel)
@@ -189,6 +201,8 @@ public class InstaDiscView extends FrameView {
189 }// </editor-fold>//GEN-END:initComponents 201 }// </editor-fold>//GEN-END:initComponents
190 202
191 // Variables declaration - do not modify//GEN-BEGIN:variables 203 // Variables declaration - do not modify//GEN-BEGIN:variables
204 private javax.swing.JList jList1;
205 private javax.swing.JScrollPane jScrollPane1;
192 private javax.swing.JPanel mainPanel; 206 private javax.swing.JPanel mainPanel;
193 private javax.swing.JMenuBar menuBar; 207 private javax.swing.JMenuBar menuBar;
194 private javax.swing.JProgressBar progressBar; 208 private javax.swing.JProgressBar progressBar;
diff --git a/client/trunk/src/com/fourisland/instadisc/Item/Item.java b/client/trunk/src/com/fourisland/instadisc/Item/Item.java new file mode 100644 index 0000000..f13ec3d --- /dev/null +++ b/client/trunk/src/com/fourisland/instadisc/Item/Item.java
@@ -0,0 +1,27 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.instadisc.Item;
7
8import java.util.HashMap;
9
10/**
11 *
12 * @author hatkirby
13 */
14public class Item {
15
16 HashMap<String,String> headerMap;
17
18 public Item(HashMap<String,String> headerMap)
19 {
20 this.headerMap = headerMap;
21 }
22
23 public void start()
24 {
25 WellFormedItem wfi = new WellFormedItem(this);
26 }
27}