정수를 TCPServer로 보내는 TCPClient를 Java로 작성했습니다. 나는 정수가 전송되지는 않지만 다른 어떤 경우를 다루기 위해 온전한 검사를 포함했다. 정수를 전송하면 다른 수신기가 정수가 될 것으로 예상됩니다. 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 박스 물음표입니다. 불행히도 나는 그들을 더 잘 묘사하는 방법을 모른다. 이제 몇 가지 질문이 생깁니다.이 문자열을받는 이유는 무엇입니까? 나는 예외없이 프로그램이 원활하게 돌아가고 숫자 만 보길 기대한다. 가능하면이 문자열이 무엇입니까? 실제로 무엇입니까?
세 번째 관련된 질문 : 어떻게하면 원활하게 해결할 수 있습니까?