質問編集履歴

2

問題点更新

2020/05/29 17:41

投稿

ajima
ajima

スコア4

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,39 @@
2
2
 
3
3
 
4
4
 
5
- javaでユーザ入力をサーバに送るクライアントのプログラムを教えてください。クライアント斜線部がわりませ。接続まではできるのですが、文字入力すとエーになす。
5
+ javaでユーザ入力をサーバに送るクライアントのプログラムを教えてください。クライアントのウィンドウら打ち込だ文字サーバに送られて同じ文字列が送り返されプログムを作たいです。
6
+
7
+ 実行例:
8
+
9
+ **クライアントウィンドウ**
10
+
11
+ ```ここに言語を入力
12
+
13
+ java RunTransTextClient localhost 8100
14
+
15
+ hello
16
+
17
+ hello
18
+
19
+ ```
20
+
21
+
22
+
23
+ **サーバーウィンドウ**
24
+
25
+ ```ここに言語を入力
26
+
27
+ java RunEchoServer 8100
28
+
29
+ accept: localhost
30
+
31
+ read: hello
32
+
33
+ wrote: hello
34
+
35
+ done
36
+
37
+ ```
6
38
 
7
39
 
8
40
 
@@ -12,31 +44,41 @@
12
44
 
13
45
 
14
46
 
15
- エラーメッセージ
16
-
17
- Exception in thread "main" java.util.InputMismatchException
47
+ クライアント側の斜線部に入れるプログラムがわかりません。接続まではできているのですが、文字入力するとサーバー側ウィンドウに何も表示されません。
18
-
19
- at java.util.Scanner.throwFor(Scanner.java:864)
48
+
20
-
49
+
50
+
21
- at java.util.Scanner.next(Scanner.java:1485)
51
+ **<現在のクライアントウィンドウ>**
22
-
52
+
23
- at java.util.Scanner.nextInt(Scanner.java:2117)
53
+ ```ここに言語を入力
24
-
25
- at java.util.Scanner.nextInt(Scanner.java:2076)
54
+
26
-
27
- at TransTextClient.run(TransTextClient.java:34)
55
+
28
-
56
+
29
- at RunTransTextClient.main(RunTransTextClient.java:8)
57
+ java RunTransTextClient localhost 8100
58
+
30
-
59
+ hello
60
+
61
+
62
+
31
-
63
+ ```
64
+
32
-
65
+ **<現在のサーバーウィンドウ>**
66
+
33
-
67
+ ```ここに言語を入力
68
+
34
-
69
+ java RunEchoServer 8100
70
+
35
-
71
+ accept: localhost
72
+
36
-
73
+ ```
74
+
75
+
76
+
37
-
77
+ ### 実行プログラム
38
-
78
+
79
+
80
+
39
- クライアント側のプログラム
81
+ **<クライアント側のプログラム>**
40
82
 
41
83
  ```
42
84
 
@@ -48,208 +90,266 @@
48
90
 
49
91
  public class TransTextClient{
50
92
 
51
- boolean isOK = false;
93
+ boolean isOK = false;
52
-
94
+
53
- String host;
95
+ String host;
54
-
96
+
55
- Socket sock;
97
+ Socket sock;
56
-
98
+
57
- public TransTextClient(String host, int port){
99
+ public TransTextClient(String host, int port){
58
-
100
+
59
- try{
101
+ try{
60
-
102
+
61
- this.host = host;
103
+ this.host = host;
62
-
104
+
63
- sock = new Socket(host,port);
105
+ sock = new Socket(host,port);
64
-
106
+
65
- isOK = true;
107
+ isOK = true;
66
-
108
+
67
- } catch (UnknownHostException e){
109
+ } catch (UnknownHostException e){
68
-
110
+
69
- System.err.println("unknown host : " host);
111
+ System.err.println("unknown host : " + host);
70
-
112
+
71
- } catch (NoRouteToHostException e) {
113
+ } catch (NoRouteToHostException e) {
72
-
114
+
73
- System.err.println("unreachable : " host);
115
+ System.err.println("unreachable : " + host);
74
-
116
+
75
- } catch (ConnectException e) {
117
+ } catch (ConnectException e) {
76
-
118
+
77
- System.err.println("connect refused : " host);
119
+ System.err.println("connect refused : " + host);
78
-
120
+
79
- } catch (java.io.IOException e) {
121
+ } catch (java.io.IOException e) {
80
-
122
+
81
- e.printStackTrace();
123
+ e.printStackTrace();
124
+
125
+ }
126
+
127
+ }
128
+
129
+ public void run() {
130
+
131
+ if (! isOK) System.exit(1);
132
+
133
+ try{
134
+
135
+ BufferedReader is;
136
+
137
+ is = new BufferedReader( new InputStreamReader(sock.getInputStream()));
138
+
139
+ PrintWriter os;
140
+
141
+ os = new PrintWriter(sock.getOutputStream());
142
+
143
+ Scanner sc = new Scanner(System.in);
144
+
145
+ String s;
146
+
147
+ while (sc.hasNextLine()){
148
+
149
+ //標準入力から1行読み込む
150
+
151
+ //改行コードを加えてサーバーに送り出す
152
+
153
+ //サーバーから1行読み込む
154
+
155
+ //標準出力に書く
156
+
157
+
158
+
159
+
160
+
161
+ }
162
+
163
+ sock.close();
164
+
165
+ } catch (java.io.IOException e) {
166
+
167
+ e.printStackTrace();
168
+
169
+ }
170
+
171
+ }
82
172
 
83
173
  }
84
174
 
175
+
176
+
177
+ ```
178
+
179
+ ```
180
+
181
+ public class RunTransTextClient {
182
+
183
+ public static void main(String[] args) {
184
+
185
+ String host = "localhost";
186
+
187
+ int port = 8888;
188
+
189
+ if (args.length > 0) host = args[0];
190
+
191
+ if (args.length > 1) port = Integer.parseInt(args[1]);
192
+
193
+ TransTextClient cli = new TransTextClient(host,port);
194
+
195
+ cli.run();
196
+
197
+ }
198
+
85
199
  }
86
200
 
87
- public void run() {
88
-
89
- if (! isOK) System.exit(1);
90
-
91
- try{
92
-
93
- BufferedReader is;
94
-
95
- is = new BufferedReader(
96
-
97
- new InputStreamReader(sock.getInputStream()));
98
-
99
- PrintWriter os;
100
-
101
- os = new PrintWriter(sock.getOutputStream());
102
-
103
- Scanner sc = new Scanner(System.in);
104
-
105
- String s;
106
-
107
- while (sc.hasNextLine()){
108
-
109
-
110
-
111
- //標準入力から1行読み込む
112
-
113
- //改行コドを加えてサーバーに送り出
114
-
115
- //サーバーから1行読み込む
116
-
117
- //標準出力に書く
118
-
119
-
201
+
202
+
203
+ ```
204
+
205
+
206
+
207
+ **<サーバー側>**
208
+
209
+ ```
210
+
211
+ import java.net.*;
212
+
213
+ import java.io.*;
214
+
215
+ public class EchoServer{
216
+
217
+ ServerSocket servSock;
218
+
219
+ public EchoServer (int port) {
220
+
221
+ try {
222
+
223
+ servSock = new ServerSocket(port);// 接続を受け付けるソケット
224
+
225
+ } catch (IOException e) {
226
+
227
+ e.printStackTrace();//エラが起きたら停止る。
228
+
229
+ System.exit(1);
230
+
231
+ }
232
+
233
+ }
234
+
235
+
236
+
237
+ public void run() {
238
+
239
+ Socket sock = null;
240
+
241
+ BufferedReader is = null;
242
+
243
+ PrintWriter os = null;
244
+
245
+ while (true) {
246
+
247
+ try {
248
+
249
+ sock = servSock.accept();//新しい接続を受け付けたら
250
+
251
+ System.out.println("accept: "+sock.getInetAddress().getHostName());
252
+
253
+ is = new BufferedReader (new InputStreamReader(sock.getInputStream ()));
254
+
255
+ os = new PrintWriter(sock.getOutputStream());
256
+
257
+ String s = null;
258
+
259
+ while ((s= is.readLine())!=null){ //クライアントから読んで
260
+
261
+ System.out.println("read: "+s);
262
+
263
+ os.print(s+"¥r¥n");//そのままクライアントに送り返す
264
+
265
+ os.flush();//確実に送り出す
266
+
267
+ System.out.println("wrote:"+s);
268
+
269
+ }
270
+
271
+
272
+
273
+ System.out.println("done");
274
+
275
+ }catch (IOException e) {
276
+
277
+ e.printStackTrace();
278
+
279
+ // System.exit(1);
280
+
281
+
282
+
283
+ }finally {
284
+
285
+ try{
286
+
287
+ if (is != null) is.close();
288
+
289
+ if (os != null) os.close();
290
+
291
+ if (sock != null) sock.close();
292
+
293
+ } catch (IOException e){
294
+
295
+
296
+
297
+ System.err.println(" Io Error in close");
298
+
299
+ }
300
+
301
+ }
302
+
303
+ }
304
+
305
+ }
120
306
 
121
307
  }
122
308
 
309
+
310
+
311
+ ```
312
+
313
+ ```
314
+
315
+ public class RunEchoServer {
316
+
317
+ public static void main(String[] args) {
318
+
319
+ int port=8888;
320
+
321
+ if (args.length >0) port = Integer.parseInt(args[0]);
322
+
323
+ EchoServer serv = new EchoServer (port);
324
+
123
- sock.close();
325
+ serv.run();
124
-
326
+
125
- } catch (java.io.IOException e) {
327
+ }
126
-
127
- e.printStackTrace();
128
328
 
129
329
  }
130
330
 
131
- }
331
+
132
-
133
- }
332
+
134
-
135
-
136
-
137
-
138
-
139
- サーバー側↓
140
-
141
- import java.net.*;
142
-
143
- import java.io.*;
144
-
145
- public class EchoServer{
146
-
147
- ServerSocket servSock;
148
-
149
- public EchoServer (int port) {
150
-
151
- try {
152
-
153
- servSock = new ServerSocket(port);// 接続を受け付けるソケット
154
-
155
- } catch (IOException e) {
156
-
157
- e.printStackTrace();//エラーが起きたら停止する。
158
-
159
- System.exit(1);
160
-
161
- }
162
-
163
- }
164
-
165
-
166
-
167
- public void run() {
168
-
169
- Socket sock = null;
170
-
171
- BufferedReader is = null;
172
-
173
- PrintWriter os = null;
174
-
175
- while (true) {
176
-
177
- try {
178
-
179
- sock = servSock.accept();//新しい接続を受け付けたら
180
-
181
- System.out.println("accept: " sock.getInetAddress().getHostName());
182
-
183
- is = new BufferedReader (new InputStreamReader(sock.getInputStream ()));
184
-
185
- os = new PrintWriter(sock.getOutputStream());
186
-
187
- String s = null;
188
-
189
- while ((s= is.readLine())!=null){ //クライアントから読んで
190
-
191
- System.out.println(" read: " s);
192
-
193
- os.print(s "¥r¥n");//そのままクライアントに送り返す
194
-
195
- os.flush();//確実に送り出す
196
-
197
- System.out.println("wrote:" s);
198
-
199
- }
200
-
201
-
202
-
203
- System.out.println("done");
204
-
205
- }catch (IOException e) {
206
-
207
- e.printStackTrace();
208
-
209
- // System.exit(1);
210
-
211
-
212
-
213
- }finally {
214
-
215
- try{
216
-
217
- if (is != null) is.close();
218
-
219
- if (os != null) os.close();
220
-
221
- if (sock != null) sock.close();
222
-
223
- } catch (IOException e){
224
-
225
-
226
-
227
- System.err.println(" Io Error in close");
228
-
229
- }
230
-
231
- }
232
-
233
- }
234
-
235
- }
236
-
237
-
238
-
239
- ```
333
+ ```
334
+
335
+
240
336
 
241
337
  ### 試したこと
242
338
 
243
-
244
-
245
- int n = sc.nextInt();
339
+ 問題である斜線部に以下のようなコードを入れた。
246
-
340
+
247
- os.print(n+" \r\n");
341
+ ```
248
-
342
+
249
- n = is.readLine();
343
+ s = is.readLine();
344
+
250
-
345
+ System.out.println("read:"+s);
346
+
347
+ os.print(s+"\r\n");
348
+
349
+ os.flush();
350
+
251
- System.out.println("wrote:"+n);
351
+ System.out.println("wrote:"+s);
252
-
253
-
254
-
352
+
353
+
354
+
255
- 様々入力して試しています。
355
+ ```

1

コード記号追加

2020/05/29 17:41

投稿

ajima
ajima

スコア4

test CHANGED
File without changes
test CHANGED
@@ -32,12 +32,14 @@
32
32
 
33
33
 
34
34
 
35
- java
35
+
36
-
37
- ソースコード
36
+
37
+
38
38
 
39
39
  クライアント側のプログラム↓
40
40
 
41
+ ```
42
+
41
43
  import java.net.*;
42
44
 
43
45
  import java.io.*;
@@ -234,6 +236,8 @@
234
236
 
235
237
 
236
238
 
239
+ ```
240
+
237
241
  ### 試したこと
238
242
 
239
243