我必須在Java中構建服務器和客戶端。服務器在端口18163上打開一個連接。客戶端連接到服務器並建立一個數字X,服務器發送消息「guess」,服務器接收到消息反覆嘗試確定X的值給發送消息的客戶端「我感覺Y「其中Y是一個整數的值。當客戶端收到消息「我感覺Y」發送給服務器時:如果號碼正確,則爲「相同」,「如果號碼不正確,則不等於」。如果號碼正確,則服務器向客戶端發送「關閉」並且客戶端關閉連接。套接字java客戶端服務器
我必須在不使用線程的情況下實現這個程序!我嘗試過,但它不起作用。
客戶:
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「發送到服務器:」相同「,如果數字是正確的,」不相等if數字是不正確的....「 - >但你的客戶端輸入一個do while循環讀取來自服務器的猜測,僅僅是一個int,並且直到它是一個正確的猜測纔會響應 – user12345613