質問編集履歴

2

sendAnswerの掲載位置を間違えましたので修正しました

2019/01/15 02:57

投稿

shalllaugh
shalllaugh

スコア17

test CHANGED
File without changes
test CHANGED
@@ -130,6 +130,360 @@
130
130
 
131
131
  /* ---------- 問題を送信する処理を行うメソッド ---------- */
132
132
 
133
+ private void setQuestion(final String question) {
134
+
135
+ /* - 対象端末を指定 - */
136
+
137
+ final String IPAdr
138
+
139
+ = "192.168.11.17";
140
+
141
+
142
+
143
+ /* - 解放するポートを指定 - */
144
+
145
+ final int port = 8080;
146
+
147
+
148
+
149
+ /* - ソケット準備 - */
150
+
151
+ final InetSocketAddress isa
152
+
153
+ = new InetSocketAddress(IPAdr, port);
154
+
155
+
156
+
157
+ /* - 非同期通信処理 - */
158
+
159
+ @SuppressLint("StaticFieldLeak")
160
+
161
+ AsyncTask<InetSocketAddress, Void, Void> subtask
162
+
163
+ = new AsyncTask<InetSocketAddress, Void, Void>() {
164
+
165
+ @Override
166
+
167
+ protected Void doInBackground(
168
+
169
+ InetSocketAddress... inetSocketAddresses) {
170
+
171
+
172
+
173
+ Socket sq= null;
174
+
175
+
176
+
177
+ /* - 文字列送信処理 - */
178
+
179
+ try {
180
+
181
+ /* - 接続 - */
182
+
183
+ sq = new Socket();
184
+
185
+ sq.connect(isa);
186
+
187
+
188
+
189
+ /* - 出力ストリームの生成 - */
190
+
191
+ BufferedWriter bw = new BufferedWriter(
192
+
193
+ new OutputStreamWriter(sq.getOutputStream()));
194
+
195
+
196
+
197
+ /* - 出力ストリームの送信 - */
198
+
199
+ bw.write(question);
200
+
201
+
202
+
203
+ /* - ソケットのクローズ - */
204
+
205
+ bw.close();
206
+
207
+ sq.close();
208
+
209
+ }
210
+
211
+ /* - 例外処理その1 - */ catch (SocketException e) {
212
+
213
+ e.printStackTrace();
214
+
215
+ }
216
+
217
+ /* - 例外処理その2 - */ catch (IOException e) {
218
+
219
+ e.printStackTrace();
220
+
221
+ }
222
+
223
+ return null;
224
+
225
+ }
226
+
227
+ };
228
+
229
+ subtask.execute(isa);
230
+
231
+ }
232
+
233
+
234
+
235
+
236
+
237
+ /* ---------- 解答を受信する処理を行うメソッド ---------- */
238
+
239
+ private void receiveAnswer(final String question) {
240
+
241
+ /* - 非同期通信開始 - */
242
+
243
+ @SuppressLint("StaticFieldLeak")
244
+
245
+ AsyncTask<Void, Void, String> subtask
246
+
247
+ = new AsyncTask<Void, Void, String>() {
248
+
249
+
250
+
251
+ /* - 解答文字列受信準備 - */
252
+
253
+ @Override
254
+
255
+ protected String doInBackground(Void... voids) {
256
+
257
+ String rs = "NG";
258
+
259
+ ServerSocket ss = null;
260
+
261
+ BufferedReader br = null;
262
+
263
+
264
+
265
+ /* - 解答文字列受信 - */
266
+
267
+ try {
268
+
269
+ ss = new ServerSocket(8181);
270
+
271
+
272
+
273
+ /* - 受信待機 - */
274
+
275
+ Socket ws = ss.accept();
276
+
277
+
278
+
279
+ /* - 受信文字列格納 - */
280
+
281
+ br = new BufferedReader(new InputStreamReader(
282
+
283
+ ws.getInputStream()));
284
+
285
+ rs = br.readLine();
286
+
287
+
288
+
289
+ /* - ソケットクローズ - */
290
+
291
+ br.close();
292
+
293
+ ws.close();
294
+
295
+ ss.close();
296
+
297
+ }
298
+
299
+
300
+
301
+ /* - 例外処理その1 - */ catch (IOException e) {
302
+
303
+ e.printStackTrace();
304
+
305
+ }
306
+
307
+ return rs;
308
+
309
+ }
310
+
311
+
312
+
313
+ /* - 解答照会処理 - */
314
+
315
+ @Override
316
+
317
+ protected void onPostExecute(String answer) {
318
+
319
+
320
+
321
+ answerMatch(question, answer);
322
+
323
+ }
324
+
325
+ };
326
+
327
+ subtask.execute();
328
+
329
+ }
330
+
331
+ ```
332
+
333
+
334
+
335
+ ### 解答側のソースコード
336
+
337
+ ```java
338
+
339
+ public class main_answer extends AppCompatActivity {
340
+
341
+ /* ---------- 各変数 ---------- */
342
+
343
+ /* - 状態を管理する変数 - */
344
+
345
+ int state = 0;
346
+
347
+
348
+
349
+ /* - 生成した問題を格納する変数 - */
350
+
351
+ String set_question = "";
352
+
353
+
354
+
355
+ /* - 入力した解答を格納する変数 - */
356
+
357
+ String make_answer = "";
358
+
359
+
360
+
361
+
362
+
363
+ /* ---------- アクテビティ起動時処理 ---------- */
364
+
365
+ @Override
366
+
367
+ protected void onCreate(Bundle saveInstanceState) {
368
+
369
+ super.onCreate(saveInstanceState);
370
+
371
+ setContentView(R.layout.ac_main_answer);
372
+
373
+
374
+
375
+ /* - 起動と同時に文字列受信待ち状態に移行 - */
376
+
377
+ receiveAnswer();
378
+
379
+ }
380
+
381
+
382
+
383
+
384
+
385
+ /* ---------- 問題受信処理を行うためのメソッド ---------- */
386
+
387
+ private void receiveAnswer() {
388
+
389
+ /* - 問題表示ボックス取得 - */
390
+
391
+ final TextView questionBox
392
+
393
+ = findViewById(R.id.question);
394
+
395
+
396
+
397
+ /* - 非同期通信処理 - */
398
+
399
+ @SuppressLint("StaticFieldLeak")
400
+
401
+ AsyncTask<Void, Void, String> subtask
402
+
403
+ = new AsyncTask<Void, Void, String>() {
404
+
405
+ @Override
406
+
407
+ protected String doInBackground(Void... voids) {
408
+
409
+ /* -各変数の宣言 - */
410
+
411
+ String rs = "NG";
412
+
413
+ ServerSocket ss = null;
414
+
415
+ BufferedReader br = null;
416
+
417
+
418
+
419
+ /* - 文字列受信 - */
420
+
421
+ try {
422
+
423
+ /* - ソケット作成 - */
424
+
425
+ ss = new ServerSocket(8080);
426
+
427
+
428
+
429
+ /* - 受信待ち状態 - */
430
+
431
+ Socket ws = ss.accept();
432
+
433
+
434
+
435
+ /* - 受信した文字列を格納する - */
436
+
437
+ br = new BufferedReader(
438
+
439
+ new InputStreamReader(
440
+
441
+ ws.getInputStream()));
442
+
443
+ rs = br.readLine();
444
+
445
+
446
+
447
+ /* - クローズ - */
448
+
449
+ br.close();
450
+
451
+ ws.close();
452
+
453
+ ss.close();
454
+
455
+ }
456
+
457
+ /* - 例外処理その1 -*/
458
+
459
+ catch (IOException e) {
460
+
461
+ e.printStackTrace();
462
+
463
+ }
464
+
465
+ return rs;
466
+
467
+ }
468
+
469
+ /* - 文字列表示処理 - */
470
+
471
+ @Override
472
+
473
+ protected void onPostExecute(String s) {
474
+
475
+ questionBox.setText(s);
476
+
477
+ }
478
+
479
+ };
480
+
481
+ subtask.execute();
482
+
483
+ }
484
+
485
+
486
+
133
487
 
134
488
 
135
489
    /* ---------- 解答入力処理を行うためのメソッド ---------- */
@@ -158,31 +512,27 @@
158
512
 
159
513
 
160
514
 
515
+ /* ---------- 解答文字列送信処理を行うメソッド ---------- */
516
+
161
- private void setQuestion(final String question) {
517
+ private void sendAnswer(final String answer) {
162
-
518
+
163
- /* - 対象端末指定 - */
519
+ /* -------- 通信対象端末指定 -------- */
164
-
165
- final String IPAdr
520
+
166
-
167
- = "192.168.11.17";
521
+ final String IP = "192.168.11.16";
168
-
169
-
170
-
171
- /* - 解放するポートを指定 - */
522
+
172
-
173
- final int port = 8080;
523
+ final int port = 8181;
174
-
175
-
176
-
524
+
525
+
526
+
177
- /* - ソケッ準備 - */
527
+ /* -------- ポー設定 -------- */
178
528
 
179
529
  final InetSocketAddress isa
180
530
 
181
- = new InetSocketAddress(IPAdr, port);
531
+ = new InetSocketAddress(IP, port);
182
-
183
-
184
-
532
+
533
+
534
+
185
- /* - 非同期通信処理 - */
535
+ /* -------- 非同期通信 -------- */
186
536
 
187
537
  @SuppressLint("StaticFieldLeak")
188
538
 
@@ -190,23 +540,27 @@
190
540
 
191
541
  = new AsyncTask<InetSocketAddress, Void, Void>() {
192
542
 
543
+
544
+
545
+ /* ------ 文字列送信処理 ------ */
546
+
193
547
  @Override
194
548
 
195
549
  protected Void doInBackground(
196
550
 
197
551
  InetSocketAddress... inetSocketAddresses) {
198
552
 
199
-
200
-
201
- Socket sq= null;
553
+ Socket sq = null;
202
-
203
-
204
-
554
+
555
+
556
+
205
- /* - 文字列送信処理 - */
557
+ /* ---- 文字列送信 ---- */
206
558
 
207
559
  try {
208
560
 
561
+
562
+
209
- /* - 接続 - */
563
+ /* -- 接続 --*/
210
564
 
211
565
  sq = new Socket();
212
566
 
@@ -214,7 +568,7 @@
214
568
 
215
569
 
216
570
 
217
- /* - 出力ストリーム生成 - */
571
+ /* -- 出力ストリーム生成 -- */
218
572
 
219
573
  BufferedWriter bw = new BufferedWriter(
220
574
 
@@ -222,13 +576,13 @@
222
576
 
223
577
 
224
578
 
225
- /* - 出力ストリムの送信 - */
579
+ /* -- 送信 -- */
226
-
580
+
227
- bw.write(question);
581
+ bw.write(answer);
228
-
229
-
230
-
582
+
583
+
584
+
231
- /* - ソケットのクローズ - */
585
+ /* -- クローズ -- */
232
586
 
233
587
  bw.close();
234
588
 
@@ -236,13 +590,19 @@
236
590
 
237
591
  }
238
592
 
593
+
594
+
595
+ /* ---- 例外処理1 ---- */
596
+
239
- /* - 例外処理その1 - */ catch (SocketException e) {
597
+ catch (SocketException e) {
240
598
 
241
599
  e.printStackTrace();
242
600
 
243
601
  }
244
602
 
603
+ /* ---- 例外処理2 ---- */
604
+
245
- /* - 例外処理その2 - */ catch (IOException e) {
605
+ catch (IOException e) {
246
606
 
247
607
  e.printStackTrace();
248
608
 
@@ -258,372 +618,10 @@
258
618
 
259
619
  }
260
620
 
261
-
262
-
263
-
264
-
265
- /* ---------- 解答を受信する処理を行うメソッド ---------- */
266
-
267
- private void receiveAnswer(final String question) {
268
-
269
- /* - 非同期通信開始 - */
270
-
271
- @SuppressLint("StaticFieldLeak")
272
-
273
- AsyncTask<Void, Void, String> subtask
274
-
275
- = new AsyncTask<Void, Void, String>() {
276
-
277
-
278
-
279
- /* - 解答文字列受信準備 - */
280
-
281
- @Override
282
-
283
- protected String doInBackground(Void... voids) {
284
-
285
- String rs = "NG";
286
-
287
- ServerSocket ss = null;
288
-
289
- BufferedReader br = null;
290
-
291
-
292
-
293
- /* - 解答文字列受信 - */
294
-
295
- try {
296
-
297
- ss = new ServerSocket(8181);
298
-
299
-
300
-
301
- /* - 受信待機 - */
302
-
303
- Socket ws = ss.accept();
304
-
305
-
306
-
307
- /* - 受信文字列格納 - */
308
-
309
- br = new BufferedReader(new InputStreamReader(
310
-
311
- ws.getInputStream()));
312
-
313
- rs = br.readLine();
314
-
315
-
316
-
317
- /* - ソケットクローズ - */
318
-
319
- br.close();
320
-
321
- ws.close();
322
-
323
- ss.close();
324
-
325
- }
326
-
327
-
328
-
329
- /* - 例外処理その1 - */ catch (IOException e) {
330
-
331
- e.printStackTrace();
332
-
333
- }
334
-
335
- return rs;
336
-
337
- }
338
-
339
-
340
-
341
- /* - 解答照会処理 - */
342
-
343
- @Override
344
-
345
- protected void onPostExecute(String answer) {
346
-
347
-
348
-
349
- answerMatch(question, answer);
350
-
351
- }
352
-
353
- };
354
-
355
- subtask.execute();
356
-
357
- }
358
-
359
621
  ```
360
622
 
361
623
 
362
624
 
363
- ### 解答側のソースコード
364
-
365
- ```java
366
-
367
- public class main_answer extends AppCompatActivity {
368
-
369
- /* ---------- 各変数 ---------- */
370
-
371
- /* - 状態を管理する変数 - */
372
-
373
- int state = 0;
374
-
375
-
376
-
377
- /* - 生成した問題を格納する変数 - */
378
-
379
- String set_question = "";
380
-
381
-
382
-
383
- /* - 入力した解答を格納する変数 - */
384
-
385
- String make_answer = "";
386
-
387
-
388
-
389
-
390
-
391
- /* ---------- アクテビティ起動時処理 ---------- */
392
-
393
- @Override
394
-
395
- protected void onCreate(Bundle saveInstanceState) {
396
-
397
- super.onCreate(saveInstanceState);
398
-
399
- setContentView(R.layout.ac_main_answer);
400
-
401
-
402
-
403
- /* - 起動と同時に文字列受信待ち状態に移行 - */
404
-
405
- receiveAnswer();
406
-
407
- }
408
-
409
-
410
-
411
-
412
-
413
- /* ---------- 問題受信処理を行うためのメソッド ---------- */
414
-
415
- private void receiveAnswer() {
416
-
417
- /* - 問題表示ボックス取得 - */
418
-
419
- final TextView questionBox
420
-
421
- = findViewById(R.id.question);
422
-
423
-
424
-
425
- /* - 非同期通信処理 - */
426
-
427
- @SuppressLint("StaticFieldLeak")
428
-
429
- AsyncTask<Void, Void, String> subtask
430
-
431
- = new AsyncTask<Void, Void, String>() {
432
-
433
- @Override
434
-
435
- protected String doInBackground(Void... voids) {
436
-
437
- /* -各変数の宣言 - */
438
-
439
- String rs = "NG";
440
-
441
- ServerSocket ss = null;
442
-
443
- BufferedReader br = null;
444
-
445
-
446
-
447
- /* - 文字列受信 - */
448
-
449
- try {
450
-
451
- /* - ソケット作成 - */
452
-
453
- ss = new ServerSocket(8080);
454
-
455
-
456
-
457
- /* - 受信待ち状態 - */
458
-
459
- Socket ws = ss.accept();
460
-
461
-
462
-
463
- /* - 受信した文字列を格納する - */
464
-
465
- br = new BufferedReader(
466
-
467
- new InputStreamReader(
468
-
469
- ws.getInputStream()));
470
-
471
- rs = br.readLine();
472
-
473
-
474
-
475
- /* - クローズ - */
476
-
477
- br.close();
478
-
479
- ws.close();
480
-
481
- ss.close();
482
-
483
- }
484
-
485
- /* - 例外処理その1 -*/
486
-
487
- catch (IOException e) {
488
-
489
- e.printStackTrace();
490
-
491
- }
492
-
493
- return rs;
494
-
495
- }
496
-
497
- /* - 文字列表示処理 - */
498
-
499
- @Override
500
-
501
- protected void onPostExecute(String s) {
502
-
503
- questionBox.setText(s);
504
-
505
- }
506
-
507
- };
508
-
509
- subtask.execute();
510
-
511
- }
512
-
513
-
514
-
515
-
516
-
517
- /* ---------- 解答文字列送信処理を行うメソッド ---------- */
518
-
519
- private void sendAnswer(final String answer) {
520
-
521
- /* -------- 通信対象端末指定 -------- */
522
-
523
- final String IP = "192.168.11.16";
524
-
525
- final int port = 8181;
526
-
527
-
528
-
529
- /* -------- ポート設定 -------- */
530
-
531
- final InetSocketAddress isa
532
-
533
- = new InetSocketAddress(IP, port);
534
-
535
-
536
-
537
- /* -------- 非同期通信 -------- */
538
-
539
- @SuppressLint("StaticFieldLeak")
540
-
541
- AsyncTask<InetSocketAddress, Void, Void> subtask
542
-
543
- = new AsyncTask<InetSocketAddress, Void, Void>() {
544
-
545
-
546
-
547
- /* ------ 文字列送信処理 ------ */
548
-
549
- @Override
550
-
551
- protected Void doInBackground(
552
-
553
- InetSocketAddress... inetSocketAddresses) {
554
-
555
- Socket sq = null;
556
-
557
-
558
-
559
- /* ---- 文字列送信 ---- */
560
-
561
- try {
562
-
563
-
564
-
565
- /* -- 接続 --*/
566
-
567
- sq = new Socket();
568
-
569
- sq.connect(isa);
570
-
571
-
572
-
573
- /* -- 出力ストリーム生成 -- */
574
-
575
- BufferedWriter bw = new BufferedWriter(
576
-
577
- new OutputStreamWriter(sq.getOutputStream()));
578
-
579
-
580
-
581
- /* -- データ送信 -- */
582
-
583
- bw.write(answer);
584
-
585
-
586
-
587
- /* -- クローズ -- */
588
-
589
- bw.close();
590
-
591
- sq.close();
592
-
593
- }
594
-
595
-
596
-
597
- /* ---- 例外処理1 ---- */
598
-
599
- catch (SocketException e) {
600
-
601
- e.printStackTrace();
602
-
603
- }
604
-
605
- /* ---- 例外処理2 ---- */
606
-
607
- catch (IOException e) {
608
-
609
- e.printStackTrace();
610
-
611
- }
612
-
613
- return null;
614
-
615
- }
616
-
617
- };
618
-
619
- subtask.execute(isa);
620
-
621
- }
622
-
623
- ```
624
-
625
-
626
-
627
625
  ### 試したこと
628
626
 
629
627
 

1

ご指摘いただいたメソッドの呼び出し箇所を追加しました

2019/01/15 02:57

投稿

shalllaugh
shalllaugh

スコア17

test CHANGED
File without changes
test CHANGED
@@ -104,10 +104,60 @@
104
104
 
105
105
 
106
106
 
107
+   /* ---------- 問題を生成する処理を行うメソッド ---------- */
108
+
109
+ public void makeQuestion(View v) {
110
+
111
+
112
+
113
+ ~省略~
114
+
115
+ /* - 入力が出題の時 - */
116
+
117
+ else if (chkEvent(str) == 5) {
118
+
119
+ setQuestion(question);
120
+
121
+ receiveAnswer(question);
122
+
123
+ }
124
+
125
+
126
+
127
+ }
128
+
107
129
 
108
130
 
109
131
  /* ---------- 問題を送信する処理を行うメソッド ---------- */
110
132
 
133
+
134
+
135
+   /* ---------- 解答入力処理を行うためのメソッド ---------- */
136
+
137
+ public void answerQuestion(View v) {
138
+
139
+
140
+
141
+   ~省略~
142
+
143
+ /* - 入力が解答の時 - */
144
+
145
+ if (chkEvent(str) == 5) {
146
+
147
+ if (!answerBox.getText().toString().equals("答 え"))
148
+
149
+ sendAnswer(make_answer);
150
+
151
+ }
152
+
153
+
154
+
155
+ }
156
+
157
+
158
+
159
+
160
+
111
161
  private void setQuestion(final String question) {
112
162
 
113
163
  /* - 対象端末を指定 - */