a client/server program using java won't work -


i'm trying create client/server program java.

when client connect server, server show him message enter first value when user write first value server sends him message write sencd value when user write second value server show him list of operations ans wait until client write number of operation , server send him result of operation.

when write program's code , run server , client, doesn't thing server blocked doing anything, client.

this code tried :

for client :

import java.net.*; import java.util.scanner; import java.io.*;   public class client {      final static string adrss = "localhost";     final static int port = 1234;      static socket s = null;      public static void main(string[] args) {          try{                   scanner cn = new scanner(system.in);                 s = new socket(adrss, port);                 printwriter out = new printwriter(s.getoutputstream());                 bufferedreader in = new bufferedreader(new inputstreamreader(s.getinputstream()));                 in.readline();             out.println(cn.nextline());             out.flush();             in.readline();             out.println(cn.nextline());             out.flush();             in.readline();             out.println(cn.nextline());             out.flush();              system.out.println("res = " + in.readline());             out.flush();          }         catch(ioexception e){e.printstacktrace();          }       }  } 

for server:

  import java.net.*; import java.io.*;  public class server {       final static int port = 1234;     private static serversocket server;      public static void main(string[] args) {         socket s = null;         try {         server = new serversocket(port);         s = server.accept();         printwriter out = new printwriter(s.getoutputstream());         bufferedreader in = new bufferedreader(new inputstreamreader(s.getinputstream()));         out.println("donner le premier nombre : ");         out.flush();         double n1 = double.parsedouble(in.readline());         out.println("donner le deuxiéme nombre : ");         out.flush();         double n2 = double.parsedouble(in.readline());          out.println("donner l'op : ");         out.flush();          string choix = in.readline();         string res = null;          switch(choix){              case "1" :                 res = string.valueof(n1 + n2);                 break;             case "2" :                  res = string.valueof(n1 - n2);                 break;             case "3" :                 res = string.valueof(n1 * n2);                 break;             case "4" :                 res = (n2 == 0) ? "impossible d'éfectuer l'op" : string.valueof(n1 / n2);                 break;             default :                 res = "erreur";             }          out.println(res);         out.flush();          }catch(ioexception e) {             e.printstacktrace();         }finally{             try{                 s.close();             }catch(ioexception e){e.printstacktrace();}         }      }  } 

printwriter doesn't flush output after use regular print (refer documentation of printwriter). you'd have flush manually. however, real reason client waits line newline, never happens. changing out.println on server side should make running, covering flushes.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -