Мне нужно создать сервер и клиент на Java. Сервер открывает соединение на порту 18163. Клиент подключается к серверу и устанавливает номер X, сервер отправляет сообщение «угадать», сервер, получивший сообщение, неоднократно пытается определить значение X для клиента, отправляющего сообщение « Я чувствую Y ", где Y - значение целого числа. Когда клиент получает сообщение «Я чувствую, что Y» отправляет серверу: «То же», если номер правильный, «Не равно, если число неверно». Если номер правильный, сервер отправляет клиенту «Закрыть», и клиент закрывает соединение.Socket java client-server
Я должен реализовать эту программу без использования нитки! Я попробовал это, но это не сработает.
КЛИЕНТ:
public class Client{
public static void main(String[] args)throws Exception{
Socket c= new Socket("127.0.0.1",18163);
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(c.getInputStream()));
DataOutputStream outToServer=new DataOutputStream(c.getOutputStream());
int min=1,max=10;
String frase;
int n1;
int numcasuale=(min+(int)(Math.random()*((max - min)+1)));
System.out.println("Num casuale generato: "+numcasuale);
do{
frase=inFromServer.readLine();
n1=Integer.parseInt(frase);
System.out.println("DAL SERVER: PROVO "+n1);
}while(!(n1==numcasuale));
outToServer.writeBytes("UGUALE\n");
frase=inFromServer.readLine();
if(frase.equals("CLOSE")){
System.out.println("Esecuzione terminata.");
c.close();
}
}
}
SERVER:
public class Server{
public static void main(String[] args)throws Exception{
ServerSocket ss = new ServerSocket(18163);
int min=1,max=10,numcasuale;
String dallclient;
while(true){
Socket c= ss.accept();
System.out.println("Client connesso: "+ c.getRemoteSocketAddress());
DataOutputStream alclient=new DataOutputStream(c.getOutputStream());
BufferedReader dalclient =new BufferedReader(new InputStreamReader(c.getInputStream()));
dallclient= dalclient.readLine();
System.out.println("DAL CLIENT :"+dallclient);
do{
numcasuale=(min+(int)(Math.random()*((max - min)+1)));
alclient.write(numcasuale);
dallclient= dalclient.readLine();
System.out.println("DAL CLIENT: "+dallclient);
}while(!(dallclient.equals("UGUALE")));
}alclient.writeBytes("CLOSE\n");
}
}
Это домашнее задание? –
В чем проблема? –
похоже, что ваш клиент не делает то, что вы говорите, это должно быть в описании: «Когда клиент получает сообщение« Я чувствую, что Y »отправляет серверу:« То же », если номер правильный,« Не равно, если число не соответствует правилу .... "-> но ваш клиент входит в цикл, пока цикл читает в предположении с сервера только как int и никогда не отвечает, пока это не будет правильным. – user12345613