2012-06-20 65 views
0

我必须在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"); 





    } 


} 
+2

这是作业吗? –

+3

究竟是什么问题? –

+0

它看起来像你的客户没有做你说的它应该在描述中:“当客户端收到消息”我感觉Y“发送到服务器:”相同“,如果数字是正确的,”不相等if数字是不正确的....“ - >但你的客户端输入一个do while循环读取来自服务器的猜测,仅仅是一个int,并且直到它是一个正确的猜测才会响应 – user12345613

回答

0

我想在服务器部分你缺少一个\n在这一行:

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

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

outToServer.writeBytes("UGUALE\n"); 
+0

你可以通过将反斜杠'),或者将它放在一个缩进4个空格的新行中。 – RustyTheBoyRobot

相关问题