Я пытался написать клиентский процесс, который будет связываться с сервисом.Программирование Java Socket с TCP не работает
Я использовал тот же код ниже, но вместо сканера я использовал BufferedReader, а клиентский вход был строкой. Кроме того, сервер просто изменяет строку на верхний регистр и отправляет ее обратно клиенту, который будет отображаться на экране. Это сработало.
Однако, когда я изменил код, чтобы клиент мог ввести двойной номер [(например: 1.6), сервер должен его округлить и отправить обратно, чтобы он был напечатан на экране], я не получаю ответ.
И я получил эту ошибку:
run:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at socketserver.SocketServer.main(SocketServer.java:38)
Java Result: 1
примечания:
- Я использую NetBeans.
- Я использовал Сканер вместо использования BufferedReader, чтобы я мог прочитать двойной номер.
Client класс
package socketclient;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class SocketClient {
/**
* @param args the command line arguments
*/
public static void main(String args[]) throws Exception
{
double inputDouble;
double modifiedNum;
Scanner inFromUser = new Scanner(System.in);
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Scanner inFromServer = new Scanner(clientSocket.getInputStream());
inputDouble = inFromUser.nextDouble();
outToServer.writeDouble(inputDouble);
modifiedNum = inFromServer.nextDouble();
System.out.println("FROM SERVER: " + modifiedNum);
outToServer.close();
clientSocket.close();
}
}
класс Сервер
package socketserver;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class SocketServer {
/**
* @param args the command line arguments
*/
public static void main(String args[]) throws Exception
{
double clientNum;
double roundedNum;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
Scanner inFromClient = new Scanner(connectionSocket.getInputStream());
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
clientNum = inFromClient.nextDouble();
roundedNum= Math.round(clientNum);
outToClient.writeDouble(roundedNum);
}
}
}
Следуйте за этим тетом http://www.tutorialspoint.com/java/java_networking.htm – Apurva
@Apurva спасибо вам, это полезно. Тем не менее, я хочу знать, что именно я сделал неправильно. – Sarah