質問編集履歴
1
ソースコードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
class
|
36
36
|
|
37
|
-
M
|
37
|
+
MineSweeperClient
|
38
38
|
|
39
39
|
{
|
40
40
|
|
@@ -42,47 +42,41 @@
|
|
42
42
|
|
43
43
|
{
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
new M
|
45
|
+
new MineSweeperClient();
|
48
|
-
|
46
|
+
|
49
|
-
}
|
47
|
+
}
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
|
49
|
+
|
50
|
+
|
53
|
-
M
|
51
|
+
MineSweeperClient(){//コンストラクター
|
54
52
|
|
55
53
|
String hostname="localhost";
|
56
54
|
|
55
|
+
|
56
|
+
|
57
|
+
Result result;
|
58
|
+
|
57
|
-
|
59
|
+
MineThread mineThread = new MineThread();
|
60
|
+
|
58
|
-
|
61
|
+
result = mineThread.getResult();
|
59
|
-
|
60
|
-
|
62
|
+
|
63
|
+
|
64
|
+
|
61
|
-
doClientJob(hostname,
|
65
|
+
doClientJob(hostname,result);
|
62
|
-
|
66
|
+
|
63
|
-
}
|
67
|
+
}
|
64
|
-
|
65
|
-
|
66
|
-
|
68
|
+
|
69
|
+
|
70
|
+
|
67
|
-
public void doClientJob(String hostname,
|
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, 500
|
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(500
|
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);
|