繁体   English   中英

套接字Java客户端-服务器

[英]Socket java client-server

我必须用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(); 
                       }
  }
}

服务器:

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");





  }


}

我认为在服务器部分,您在此行缺少\\n

while( !(dallclient.equals("UGUALE")) );

因为客户端发送"UGUALE\\n"

outToServer.writeBytes("UGUALE\n");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM