我必须用Java构建服务器和客户端。服务器在端口18163上打开一个连接。客户端连接到服务器并建立一个数字X,服务器发送消息“guess”,服务器收到消息,反复尝试确定发送消息的客户端的X值“我觉得Y“Y是整数的值。当客户端收到消息“我感觉Y”发送到服务器时:如果号码正确则“相同”,“如果号码不正确则不相等”。如果数字正确,服务器将向客户端发送“关闭”,客户端将关闭连接。
我必须在不使用线程的情况下实现此程序!我试过了,但它不起作用。
客户端:
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");
}
}
答案 0 :(得分:0)
我认为在服务器部分,您在此行中缺少\n
:
while( !(dallclient.equals("UGUALE")) );
因为客户端正在发送"UGUALE\n"
outToServer.writeBytes("UGUALE\n");