誰もが私にTCP上アスキーMSGを送信する例を渡すことができます?アスキーは
おかげで、
線を(couldntのネット上の例を見つけます。)。エコーサーバへの書き込みおよびエコーサーバからの読み取りの場合は、
誰もが私にTCP上アスキーMSGを送信する例を渡すことができます?アスキーは
おかげで、
線を(couldntのネット上の例を見つけます。)。エコーサーバへの書き込みおよびエコーサーバからの読み取りの場合は、
簡略化抜粋:
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("taranis", 7);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: taranis.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
彼はASCIIを必要としますが、そのような場合の読者は役に立たず、ソケットの入出力ストリームだけで動作します(BufferedXXXをラップする必要はありません) – bestsss
この例では、私のために働く? – rayman
私は両方の引数についてbestsssに同意しません。まず、リーダーを使用する方が安全です(ASCIIからUnicodeへの切り替えが1日であれば問題ありません)。第二に、バッファリングされたリーダーを使用することは速度のために必要です(バッファリングなしでは、ソケットを常にポーリングするため、多くの時間を失います)。最後に、両方の組み合わせが高速でユニコード互換で、便利なメソッドを提供します(バイトの配列を処理するのではなくreadLine()など) – dagnelies
わからないが、私はこれは動作するはずだと思う:
try (DataOutputStream outToClient = new DataOutputStream(socket.getOutputStream())) {
outToClient.write(stringMessage.getBytes("US-ASCII"));
} catch (IOException e) {}
元の質問に記載されていないASCII制御コードを処理するかどうかです。
印刷可能 ASCII文字がASCIIの制御コードを含む文字列(特に、文字列にjavaの改行文字「文字」のいずれかを含む)に使用していました。 VT、CR、LFなどがあります。回避策は、文字列をバイトとして送信し、それを遠端の文字列に変換することです。
この状況をどのように処理するかについては、この質問に対する私の回答を参照してください。
Reading Lines and byte[] from input stream
と私の密接に関連して質問し、それが受け入れられたの答え:それはあなたが見つけることができなかったことをほとんど信じられない
Need TCPIP client that blocks until a specific character sequence is received
* WWWにおける任意の*例:のhttp://ダウンロード。 oracle.com/javase/tutorial/networking/index.html –