|
1 | 1 | package com.vilyever.androidsocketclient; |
2 | 2 |
|
3 | | -import android.os.AsyncTask; |
4 | 3 | import android.os.Bundle; |
5 | | -import android.support.annotation.NonNull; |
6 | 4 | import android.support.v7.app.AppCompatActivity; |
| 5 | +import android.util.Log; |
7 | 6 | import android.widget.ImageView; |
8 | 7 |
|
9 | | -import com.vilyever.jsonmodel.JsonModel; |
10 | | -import com.vilyever.logger.Logger; |
11 | | -import com.vilyever.socketclient.SocketClient; |
12 | | -import com.vilyever.socketclient.helper.SocketClientAddress; |
13 | | -import com.vilyever.socketclient.helper.SocketClientDelegate; |
14 | | -import com.vilyever.socketclient.helper.SocketClientReceiveDelegate; |
15 | | -import com.vilyever.socketclient.helper.SocketClientSendingDelegate; |
16 | | -import com.vilyever.socketclient.helper.SocketPacket; |
17 | | -import com.vilyever.socketclient.helper.SocketResponsePacket; |
18 | | -import com.vilyever.socketclient.server.SocketServer; |
19 | | -import com.vilyever.socketclient.server.SocketServerClient; |
20 | | -import com.vilyever.socketclient.server.SocketServerDelegate; |
21 | | -import com.vilyever.socketclient.util.IPUtil; |
22 | | - |
23 | | -import java.io.UnsupportedEncodingException; |
24 | | -import java.util.ArrayList; |
| 8 | +import java.nio.ByteBuffer; |
25 | 9 |
|
26 | 10 | public class MainActivity extends AppCompatActivity { |
27 | 11 | final MainActivity self = this; |
28 | 12 |
|
29 | 13 | private ImageView imageView; |
30 | 14 | protected ImageView getImageView() { if (this.imageView == null) { this.imageView = (ImageView) findViewById(R.id.imageView); } return this.imageView; } |
31 | 15 |
|
32 | | - private SocketServer socketServer; |
33 | | - protected SocketServer getSocketServer() { |
34 | | - if (this.socketServer == null) { |
35 | | - this.socketServer = new SocketServer(); |
36 | | - |
37 | | - this.socketServer.getHeartBeatHelper().setHeartBeatInterval(1000 * 30); |
38 | | - this.socketServer.getHeartBeatHelper().setRemoteNoReplyAliveTimeout(1000 * 60); |
39 | | - this.socketServer.getHeartBeatHelper().setSendString("$HB$"); |
40 | | - this.socketServer.getHeartBeatHelper().setReceiveString("$HB$"); |
41 | | - |
42 | | -// this.socketServer.getSocketPacketHelper().setSendHeaderData(new byte[]{0x03,0x02}); |
43 | | -// this.socketServer.getSocketPacketHelper().setSendTrailerData(new byte[]{0x01,0x03}); |
44 | | -// this.socketServer.getSocketPacketHelper().setReceiveHeaderData(new byte[]{0x03,0x02}); |
45 | | -// this.socketServer.getSocketPacketHelper().setReceiveTrailerData(new byte[]{0x01,0x03}); |
46 | | - this.socketServer.getSocketPacketHelper().setSendHeaderString("_abcd_1f9jsld;af"); |
47 | | - this.socketServer.getSocketPacketHelper().setSendTrailerString("jrjgofnosd9[;[];3289-sjf"); |
48 | | - this.socketServer.getSocketPacketHelper().setReceiveHeaderString("_abcd_1f9jsld;af"); |
49 | | - this.socketServer.getSocketPacketHelper().setReceiveTrailerString("jrjgofnosd9[;[];3289-sjf"); |
50 | | - |
51 | | - this.socketServer.registerSocketServerDelegate(new SocketServerDelegate() { |
52 | | - @Override |
53 | | - public void onServerBeginListen(SocketServer socketServer, int port) { |
54 | | - Logger.log("SocketServer: begin listen " + port); |
55 | | - } |
56 | | - |
57 | | - @Override |
58 | | - public void onServerStopListen(SocketServer socketServer, int port) { |
59 | | - Logger.log("SocketServer: stop listen " + port); |
60 | | - } |
61 | | - |
62 | | - @Override |
63 | | - public void onClientConnected(SocketServer socketServer, SocketServerClient socketServerClient) { |
64 | | - Logger.log("SocketServer: onClientConnected"); |
65 | | - |
66 | | - self.setServerListeningSocketServerClient(socketServerClient); |
67 | | - } |
68 | | - |
69 | | - @Override |
70 | | - public void onClientDisconnected(SocketServer socketServer, SocketServerClient socketServerClient) { |
71 | | - Logger.log("SocketServer: onClientDisconnected"); |
72 | | - self.setServerListeningSocketServerClient(null); |
73 | | - } |
74 | | - }); |
75 | | - } |
76 | | - return this.socketServer; |
77 | | - } |
78 | | - |
79 | | - private SocketClient localSocketClient; |
80 | | - protected SocketClient getLocalSocketClient() { |
81 | | - if (this.localSocketClient == null) { |
82 | | - this.localSocketClient = new SocketClient(new SocketClientAddress(IPUtil.getIPAddress(true), getSocketServer().getPort())); |
83 | | - |
84 | | - this.localSocketClient.getHeartBeatHelper().setHeartBeatInterval(1000 * 30); |
85 | | - this.localSocketClient.getHeartBeatHelper().setRemoteNoReplyAliveTimeout(1000 * 60); |
86 | | - this.localSocketClient.getHeartBeatHelper().setSendString("$HB$"); |
87 | | - this.localSocketClient.getHeartBeatHelper().setReceiveString("$HB$"); |
88 | | - |
89 | | -// this.localSocketClient.getSocketPacketHelper().setSendHeaderData(new byte[]{0x03,0x02}); |
90 | | -// this.localSocketClient.getSocketPacketHelper().setSendTrailerData(new byte[]{0x01,0x03}); |
91 | | -// this.localSocketClient.getSocketPacketHelper().setReceiveHeaderData(new byte[]{0x03,0x02}); |
92 | | -// this.localSocketClient.getSocketPacketHelper().setReceiveTrailerData(new byte[]{0x01,0x03}); |
93 | | - |
94 | | - this.localSocketClient.getSocketPacketHelper().setSendHeaderString("_abcd_1f9jsld;af"); |
95 | | - this.localSocketClient.getSocketPacketHelper().setSendTrailerString("jrjgofnosd9[;[];3289-sjf"); |
96 | | - this.localSocketClient.getSocketPacketHelper().setReceiveHeaderString("_abcd_1f9jsld;af"); |
97 | | - this.localSocketClient.getSocketPacketHelper().setReceiveTrailerString("jrjgofnosd9[;[];3289-sjf"); |
98 | | - |
99 | | - this.localSocketClient.getSocketPacketHelper().setSegmentLength(4 * 1024); |
100 | | - |
101 | | - this.localSocketClient.registerSocketClientDelegate(new SocketClientDelegate() { |
102 | | - @Override |
103 | | - public void onConnected(SocketClient client) { |
104 | | - Logger.log("Local onConnected"); |
105 | | - getLocalSocketClient().sendString("sy hi!"); |
106 | | -// getLocalSocketClient().sendString("sy hi! you are impossible warriors"); |
107 | | -// getLocalSocketClient().sendString("sy hi! you are impossible warriors, i may really make a good decision to support u."); |
108 | | -// getLocalSocketClient().sendString("sy hi! you are impossible warriors, i may really make a good decision to support u."); |
109 | | - } |
110 | | - |
111 | | - @Override |
112 | | - public void onDisconnected(SocketClient client) { |
113 | | - Logger.log("Local onDisconnected"); |
114 | | - } |
115 | | - |
116 | | - @Override |
117 | | - public void onResponse(SocketClient client, @NonNull SocketResponsePacket responsePacket) { |
118 | | - } |
119 | | - }); |
120 | | - this.localSocketClient.registerSocketClientSendingDelegate(new SocketClientSendingDelegate() { |
121 | | - |
122 | | - @Override |
123 | | - public void onSendPacketBegin(SocketClient client, SocketPacket packet) { |
124 | | -// Logger.log("Local onSendPacketBegin " + packet.getID()); |
125 | | - } |
126 | | - |
127 | | - @Override |
128 | | - public void onSendPacketCancel(SocketClient client, SocketPacket packet) { |
129 | | -// Logger.log("Local onSendPacketCancel " + packet.getID()); |
130 | | - } |
131 | | - |
132 | | - @Override |
133 | | - public void onSendPacketEnd(SocketClient client, SocketPacket packet) { |
134 | | -// Logger.log("Local onSendPacketEnd " + packet.getID()); |
135 | | - } |
136 | | - |
137 | | - @Override |
138 | | - public void onSendPacketProgress(SocketClient client, SocketPacket packet, float progress) { |
139 | | -// Logger.log("Local onSendPacketProgress " + packet.getID() + " progress : " + progress); |
140 | | - } |
141 | | - }); |
142 | | - this.localSocketClient.registerSocketClientReceiveDelegate(new SocketClientReceiveDelegate() { |
143 | | - @Override |
144 | | - public void onResponse(SocketClient client, @NonNull SocketResponsePacket responsePacket) { |
145 | | - Logger.log("Local onResponse 【" + responsePacket.getMessage() + "】"); |
146 | | - } |
147 | | - |
148 | | - @Override |
149 | | - public void onHeartBeat(SocketClient socketClient) { |
150 | | -// Logger.log("Local onHeartBeat "); |
151 | | - } |
152 | | - }); |
153 | | - } |
154 | | - return this.localSocketClient; |
155 | | - } |
156 | | - |
157 | | - private SocketServerClient serverListeningSocketServerClient; |
158 | | - protected MainActivity setServerListeningSocketServerClient(SocketServerClient serverListeningSocketServerClient) { |
159 | | - this.serverListeningSocketServerClient = serverListeningSocketServerClient; |
160 | | - if (serverListeningSocketServerClient == null) { |
161 | | - return this; |
| 16 | + private TestServer testServer; |
| 17 | + protected TestServer getTestServer() { |
| 18 | + if (this.testServer == null) { |
| 19 | + this.testServer = new TestServer(); |
162 | 20 | } |
163 | | - |
164 | | - this.serverListeningSocketServerClient.registerSocketClientDelegate(new SocketClientDelegate() { |
165 | | - @Override |
166 | | - public void onConnected(SocketClient client) { |
167 | | -// Logger.log("Server onConnected"); |
168 | | - } |
169 | | - |
170 | | - @Override |
171 | | - public void onDisconnected(SocketClient client) { |
172 | | -// Logger.log("Server onDisconnected"); |
173 | | - } |
174 | | - |
175 | | - @Override |
176 | | - public void onResponse(SocketClient client, @NonNull SocketResponsePacket responsePacket) { |
177 | | - } |
178 | | - }); |
179 | | - this.serverListeningSocketServerClient.registerSocketClientSendingDelegate(new SocketClientSendingDelegate() { |
180 | | - |
181 | | - @Override |
182 | | - public void onSendPacketBegin(SocketClient client, SocketPacket packet) { |
183 | | -// Logger.log("Server onSendPacketBegin " + packet.getID()); |
184 | | - } |
185 | | - |
186 | | - @Override |
187 | | - public void onSendPacketCancel(SocketClient client, SocketPacket packet) { |
188 | | -// Logger.log("Server onSendPacketCancel " + packet.getID()); |
189 | | - } |
190 | | - |
191 | | - @Override |
192 | | - public void onSendPacketEnd(SocketClient client, SocketPacket packet) { |
193 | | -// Logger.log("Server onSendPacketEnd " + packet.getID()); |
194 | | - |
195 | | - } |
196 | | - |
197 | | - @Override |
198 | | - public void onSendPacketProgress(SocketClient client, SocketPacket packet, float progress) { |
199 | | -// Logger.log("Server onSendPacketProgress " + packet.getID() + " progress : " + progress); |
200 | | - } |
201 | | - }); |
202 | | - this.serverListeningSocketServerClient.registerSocketClientReceiveDelegate(new SocketClientReceiveDelegate() { |
203 | | - @Override |
204 | | - public void onResponse(SocketClient client, @NonNull SocketResponsePacket responsePacket) { |
205 | | - if (responsePacket.getMessage().length() < 100) { |
206 | | - Logger.log("Server onResponse 【" + responsePacket.getMessage() + "】"); |
207 | | - } |
208 | | - else { |
209 | | - Logger.log("Server onResponse 【" + responsePacket.getMessage().substring(0, 100) + "】"); |
210 | | - Logger.log("Server onResponse length 【" + responsePacket.getData().length + "】"); |
211 | | - } |
212 | | - } |
213 | | - |
214 | | - @Override |
215 | | - public void onHeartBeat(SocketClient socketClient) { |
216 | | - Logger.log("Server onHeartBeat "); |
217 | | - } |
218 | | - }); |
219 | | - return this; |
220 | | - } |
221 | | - protected SocketClient getServerListeningSocketServerClient() { |
222 | | - return this.serverListeningSocketServerClient; |
| 21 | + return this.testServer; |
223 | 22 | } |
224 | 23 |
|
225 | 24 | @Override |
226 | 25 | protected void onCreate(Bundle savedInstanceState) { |
227 | 26 | super.onCreate(savedInstanceState); |
228 | 27 | setContentView(R.layout.activity_main); |
229 | 28 |
|
230 | | - getSocketServer().beginListenFromPort(80); |
| 29 | + Log.d("logger", "ts " + bytesToHex(encodeUINT16(18005))); |
| 30 | + Log.d("logger", "ts " + bytesToHex(encodeUINT16(18005))); |
231 | 31 |
|
232 | | - getLocalSocketClient().connect(); |
233 | | - |
234 | | - boolean shouldSend = true; |
235 | | - if (shouldSend) { |
236 | | - getWindow().getDecorView().postDelayed(new Runnable() { |
237 | | - @Override |
238 | | - public void run() { |
239 | | - getLocalSocketClient().sendString("你好"); |
240 | | - try { |
241 | | - getLocalSocketClient().sendData("HELLO".getBytes("UTF-8")); |
242 | | - } |
243 | | - catch (UnsupportedEncodingException e) { |
244 | | - e.printStackTrace(); |
245 | | - } |
246 | | - |
247 | | - getLocalSocketClient().sendString("你也好"); |
248 | | - |
249 | | - new AsyncTask<Void, Void, Void>() { |
250 | | - @Override |
251 | | - protected Void doInBackground(Void... params) { |
252 | | - self.getLocalSocketClient().sendString("ABC"); |
253 | | - |
254 | | - TestModel testModel = new TestModel(); |
255 | | - testModel.subModels = new ArrayList<TestSubModel>(); |
256 | | - for (int i = 0; i < 10000; i++) { |
257 | | - TestSubModel subModel = new TestSubModel(); |
258 | | - subModel.title = "title " + i; |
259 | | - testModel.subModels.add(subModel); |
260 | | - } |
261 | | - |
262 | | - SocketPacket packet = self.getLocalSocketClient().sendString(testModel.toJson().toString()); |
263 | | - Logger.log("packet size " + packet.getMessage().getBytes().length); |
264 | | - |
265 | | - self.getLocalSocketClient().sendString("一二三"); |
266 | | - |
267 | | - return null; |
268 | | - } |
269 | | - |
270 | | - @Override |
271 | | - protected void onPostExecute(Void aVoid) { |
272 | | - super.onPostExecute(aVoid); |
273 | | - |
274 | | - } |
275 | | - }.execute(); |
276 | | - } |
277 | | - }, 5 * 1000); |
278 | | - } |
| 32 | + getTestServer().beginListen(); |
279 | 33 | } |
280 | 34 |
|
281 | | - class TestModel extends JsonModel { |
282 | | - ArrayList<TestSubModel> subModels; |
| 35 | + public byte[] encodeUINT16(int param) { |
| 36 | + byte[] bytes = ByteBuffer.allocate(4).putInt(param ^ 0xADAD).array(); |
| 37 | + |
| 38 | + byte[] encodedBytes = new byte[2]; |
| 39 | + encodedBytes[0] = bytes[3]; |
| 40 | + encodedBytes[1] = bytes[2]; |
| 41 | + return encodedBytes; |
283 | 42 | } |
284 | 43 |
|
285 | | - class TestSubModel extends JsonModel { |
286 | | - String title; |
| 44 | + final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); |
| 45 | + public static String bytesToHex(byte[] bytes) { |
| 46 | + char[] hexChars = new char[bytes.length * 2]; |
| 47 | + for ( int j = 0; j < bytes.length; j++ ) { |
| 48 | + int v = bytes[j] & 0xFF; |
| 49 | + hexChars[j * 2] = hexArray[v >>> 4]; |
| 50 | + hexChars[j * 2 + 1] = hexArray[v & 0x0F]; |
| 51 | + } |
| 52 | + return new String(hexChars); |
287 | 53 | } |
288 | 54 | } |
0 commit comments