私はTCPServerに整数を送るJavaでTCPClientを書いています。私は整数が送られないという事実をカバーするだけの健全性チェックを含んだが、何か他のものが含まれていた。整数を送信する場合、他の受信者が整数であると予想されます。TCPClientが整数を送信するにもかかわらず、TCPServerが文字列を受け取るのはなぜですか?
ただし、以下の次のコードでは、これはそうではないようです。
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
class TCPClient {
public static void main(String argv[]) throws Exception {
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
int c = 0;
while (c < 1000000) {
System.out.println("Sent: " + c);
outToServer.write(c);
// Thread.sleep(1000);
c++;
}
clientSocket.close();
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
class TCPServer {
public static void main(String argv[]) throws Exception {
String reg = "\\d+";
int c = 0;
ServerSocket welcomeSocket = new ServerSocket(6789);
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
while (true) {
String s = inFromClient.readLine();
if (s.matches(reg) == false) {
throw new Exception(s + "is an invalid input! Expected one String of digits.");
}
int n = Integer.parseInt(s);
if (c + 1 != n) {
throw new Exception("Expected: " + (c + 1) + ", but got: " + n);
}
System.out.println("Received: " + c);
c++;
}
}
}
私が受け取る文字列常に8箱入り疑問符です。残念ながら、私はそれらをより良く表現する方法を知らない。 ここでいくつかの質問が発生します。なぜこの文字列を受け取るのですか?私はプログラムがスムーズに動作することを期待しています。 可能であれば、この文字列は何ですか?それは実際何ですか?
第3の関連する質問:どうすればスムーズに修正できますか?