質問編集履歴

1

ソースコードの変更

2018/12/25 10:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  class
36
36
 
37
- MultiClientSample
37
+ MineSweeperClient
38
38
 
39
39
  {
40
40
 
@@ -42,47 +42,41 @@
42
42
 
43
43
  {
44
44
 
45
-
46
-
47
- new MultiClientSample();
45
+ new MineSweeperClient();
48
-
46
+
49
- }
47
+ }
50
-
51
-
52
-
48
+
49
+
50
+
53
- MultiClientSample(){//コンストラクター
51
+ MineSweeperClient(){//コンストラクター
54
52
 
55
53
  String hostname="localhost";
56
54
 
55
+
56
+
57
+ Result result;
58
+
57
- //String hostname="133.27....";//おとなりのipaddress
59
+ MineThread mineThread = new MineThread();
60
+
58
-
61
+ result = mineThread.getResult();
59
-
60
-
62
+
63
+
64
+
61
- doClientJob(hostname,"message hello1");
65
+ doClientJob(hostname,result);
62
-
66
+
63
- }
67
+ }
64
-
65
-
66
-
68
+
69
+
70
+
67
- public void doClientJob(String hostname,String msg)
71
+ public void doClientJob(String hostname,Result result)
68
72
 
69
73
  {
70
74
 
71
75
  try {
72
76
 
73
-
74
-
75
- //アドレス情報を保持するsocketAddressを作成。
76
-
77
- //ポート番号は5000
78
-
79
77
  InetSocketAddress socketAddress =
80
78
 
81
- new InetSocketAddress(hostname, 5000);
79
+ new InetSocketAddress(hostname, 5002);
82
-
83
-
84
-
85
- //socketAddressの値に基づいて通信に使用するソケットを作成する。
86
80
 
87
81
 
88
82
 
@@ -90,24 +84,14 @@
90
84
 
91
85
  Socket socket = new Socket();
92
86
 
93
- //タイムアウトは10秒(10000msec)
94
-
95
87
  socket.connect(socketAddress, 10000);
96
88
 
97
89
 
98
90
 
99
- //接続先の情報を入れるInetAddress型のinadrを用意する。
100
-
101
91
  InetAddress inadr;
102
92
 
103
93
 
104
94
 
105
- //inadrにソケットの接続先アドレスを入れ、nullである場合には
106
-
107
- //接続失敗と判断する。
108
-
109
- //nullでなければ、接続確立している。
110
-
111
95
  if ((inadr = socket.getInetAddress()) != null) {
112
96
 
113
97
  System.out.println("Connect to " + inadr);
@@ -122,52 +106,24 @@
122
106
 
123
107
 
124
108
 
125
- //メッセージの送信処理
126
-
127
- //コマンドライン引数の2番目をメッセージとする。
128
-
129
- Result result;
130
-
131
- MineThread mineThread = new MineThread();
132
-
133
- result = mineThread.getResult();
134
-
135
-
136
-
137
- //PrintWriter型のwriterに、ソケットの出力ストリームを渡す。(Auto Flush)
138
-
139
109
  PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
140
110
 
141
- //ソケットの入力ストリームをBufferedReaderに渡す。
142
-
143
111
  BufferedReader rd =
144
112
 
145
113
  new BufferedReader(new InputStreamReader( socket.getInputStream()));
146
114
 
147
115
 
148
116
 
149
- //ソケットから出力する。
150
-
151
117
  writer.println(result);
152
118
 
153
119
 
154
120
 
155
- //もしPrintWriterがAutoFlushでない場合は,以下が必要。
156
-
157
-
158
-
159
- //サーバーからのメッセージ読み取り
160
-
161
121
  String getline=rd.readLine();
162
122
 
163
123
  System.out.println("you : " + getline);
164
124
 
165
125
 
166
126
 
167
- //終了処理
168
-
169
-
170
-
171
127
  rd.close();
172
128
 
173
129
  writer.close();
@@ -198,16 +154,6 @@
198
154
 
199
155
 
200
156
 
201
- //複数接続Socket通信サンプルプログラム(サーバー)
202
-
203
- //クライアントからの接続を待ち、接続が行なわれたら
204
-
205
- //1行のデータを受け取り、コンソールに表示して接続を切断する。
206
-
207
- //複数のクライアントとの通信をスレッドにより行なう。
208
-
209
- //プログラム終了は,コマンドプロンプトでCTRL-C
210
-
211
157
  import java.io.BufferedReader;
212
158
 
213
159
  import java.io.IOException;
@@ -248,7 +194,7 @@
248
194
 
249
195
  //ソケットを作成
250
196
 
251
- serverSoc = new ServerSocket(5000);
197
+ serverSoc = new ServerSocket(5002);
252
198
 
253
199
  boolean flag=true;
254
200
 
@@ -418,6 +364,10 @@
418
364
 
419
365
 
420
366
 
367
+
368
+
369
+
370
+
421
371
  ```
422
372
 
423
373
 
@@ -440,20 +390,6 @@
440
390
 
441
391
 
442
392
 
443
- //Step1本クラスからインナーThreadクラスを5つ生成しそれぞれ一秒ごとに
444
-
445
- //1秒毎に1からnまでカウントするプログラムを作成させよ。
446
-
447
- //setThreadName(String tname,int n)でスレッド名とカウント秒数を与えるようにせよ。
448
-
449
- //Step2:ExThreadsMainTestにICallBackListenerインタフェースを実装して
450
-
451
- //ThreadからのCallBackによりどのスレッドがおわったかを本クラス内で表示させよ。
452
-
453
- //ThreadにsetCallBackListener(listener)を実装すること
454
-
455
-
456
-
457
393
  MineThread(){
458
394
 
459
395
  InnerThread minesweeper= new InnerThread((ICallBackListener)this);