テキストデータをやりとりするサーバは以下のように書きます。 このサーバは接続してきたクライアントが送ってくる文字列を そのまま送り返します。
ネットワーク接続で文字列を送信する時は、復帰'\r'と改行'\n'の両方の文字を 送信することが推奨されています。 そのため下のプログラムの中では明示的に行末に"\r\n"を出力しています。
データを送信するメソッドを呼び出しただけでは相手にデータが送られず、 まだバッファの中にデータが残っていることに注意をして下さい。 確実に送出するためには、明示的にflush()を呼び出します。 こちらから送出するデータが完全に相手に送られていない状態で、 相手からのデータの読み込みを行うと、 デッドロックが生じる可能性があるので注意が必要です。
RunEchoServer.javaの実行例 |
|
クライアント側の実行例 |
|
「改行コード」とは「テキストデータにおいて行の終わりを表す文字」 のことです。
改行を表す文字列はOSによって異なることに注意しましょう。
ASCIIコード | Javaでの文字表記 | 記号 | 名前 | 日本語名 |
0x0d | '\r' | CR | Carriage Return | 復帰 |
0x0a | '\n' | LFまたはNL | Line FeedまたはNew Line | 改行 |
0(16) | 1(16) | 2(16) | 3(16) | 4(16) | 5(16) | 6(16) | 7(16) | 8(16) | 9(16) | a(16) | b(16) | c(16) | d(16) | e(16) | f(16) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00(16) | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | NL | VT | NP | CR | SO | SI |
10(16) | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
20(16) | SP | ! | ” | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
30(16) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
40(16) | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
50(16) | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
60(16) | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
70(16) | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |