diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2008-07-28 10:00:25 +0000 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2008-07-28 10:00:25 +0000 |
commit | 8b426229b9f0d7b360e487871930b682f104dd9f (patch) | |
tree | fece686441010520e56ca90ac5945668efe7758b /client/trunk | |
parent | 35ac16bdff38d75ab22b82ca0017db03506da23b (diff) | |
download | instadisc-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/trunk')
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 | */ | ||
5 | package com.fourisland.instadisc; | ||
6 | |||
7 | import com.fourisland.instadisc.Item.Item; | ||
8 | import java.io.IOException; | ||
9 | import java.io.InputStream; | ||
10 | import java.net.ServerSocket; | ||
11 | import java.net.Socket; | ||
12 | import java.util.HashMap; | ||
13 | import java.util.logging.Level; | ||
14 | import java.util.logging.Logger; | ||
15 | |||
16 | /** | ||
17 | * | ||
18 | * @author hatkirby | ||
19 | */ | ||
20 | public 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 | |||
52 | class 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 | |||
6 | package com.fourisland.instadisc.Item; | ||
7 | |||
8 | import java.util.HashMap; | ||
9 | |||
10 | /** | ||
11 | * | ||
12 | * @author hatkirby | ||
13 | */ | ||
14 | public 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 | } | ||