내 라즈베리 파이와 함께 사용할 간단한 클라이언트 - 서버를 만들고 있습니다.자바에서 소켓을 사용하여 여러 줄 인쇄
내가 달성하고자하는 것은 내 클라이언트를 사용하여 서버에 "ACKTEMP"를 보내는 것입니다. 그런 다음 서버는 직렬 포트 (STM32 Nucleo Board btw)를 호출합니다.이 메시지를 통해 직렬 통신을 사용하여 온도를 다시 얻은 다음 클라이언트로 다시 보냅니다.
내 질문에, Nucleo 널 (TEMP : xx) 같은 문자열을 반환합니다. 여러 문자열을 한 번에 다시 보내기 시작할 때까지 작동합니다. 내가 ACKTEMP를 보내고 (TEMP : xx)와 "Temperature OK"를 받기를 원한다면, 나는 단지 (TEMP : xx) 첫 줄만 얻는다.
그래서 내 코드의 어딘가에서 뭔가를 바꾸어서 하나의 줄 대신 모든 줄을 인쇄 한 다음 그만 두는 것 같습니다. 제 프로그래밍이 그렇게 위대하지 않으면 제게 화를 내지 마십시오. 저는 학생이고 모든 것을 이해하려고 노력합니다.
public class Client {
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
String sentence;
String messageFromServer;
while(true)
{
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
try (Socket clientSocket = new Socket("192.168.0.135", 6789)) {
PrintWriter outToServer = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.println(sentence + '\n');
messageFromServer = inFromServer.readLine();
System.out.println("FROM SERVER: " + messageFromServer);
clientSocket.close();
}
}
}
}
public class Server {
private static SerialPort serialPort;
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
serialPort = new SerialPort("/dev/ttyACM0");
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
PrintWriter outToClient = new PrintWriter(connectionSocket.getOutputStream(), true);
clientSentence = inFromClient.readLine();
try{
//opening port
serialPort.openPort();
serialPort.setParams(
SerialPort.BAUDRATE_115200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
//Write string to port
serialPort.writeString(clientSentence + "\n");
System.out.println("String wrote to port, waiting for response..");
try {
Thread.sleep(10); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
String buffer = serialPort.readString();
outToClient.println(buffer + '\n');
serialPort.closePort();//Close serial port
}
catch(SerialPortException ex){
System.out.println("Error writing data to port: " + ex);
}
}
// TODO code application logic here
}
}