Saturday, 15 February 2014

multithreading - Login server web app java -



multithreading - Login server web app java -

hi writing basic login server using message passing . server receives message client checks in database file , accordingly sends reply happening whenever send message telnet can see server accepting , replying not accepting message again. below code , no homework

package login; import java.io.bufferedreader; import java.io.bufferedwriter; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.ioexception; import java.io.inputstreamreader; import java.io.outputstream; import java.io.outputstreamwriter; import java.io.printwriter; import java.io.streamcorruptedexception; import java.net.serversocket; import java.net.socket; import java.net.socketexception; public class login { public static void main(string[] args) { login login = new login(); new thread(login.new servertask(null)).start(); new thread(login.new clienttask("clientstart")).start(); } public string login(string username, string password, string memberid) { system.out.println("entering login"); boolean match = false; seek { // created file input stream , buffered reader stream read // files fileinputstream inputstream = new fileinputstream( "/home/rahulroc18/desktop/database.txt"); bufferedreader bufferedreader = new bufferedreader( new inputstreamreader(inputstream)); string strline; string[] datareader; datareader = new string[10]; string readdata = ""; // loop through end of file , read info line line // in order store string farther storage in // memory while ((strline = bufferedreader.readline()) != null) { readdata = readdata + strline + ":"; } // split string store user name , password storing in // array in alternate positions datareader = readdata.split(":"); // system.out.println(datareader.length); // loops through array , checks user name , passwords // // right match sends login successful if password // wrong sends message password in right else no match // sends check credentials (int = 0; < datareader.length; i++) { if (username.equals(datareader[i])) { match = true; if (password.equals(datareader[i + 1])) { string message; message = "login successfull" + " : " + username + " : " + password + " : " + memberid; system.out .println("sending success message client !!!"); homecoming message; // send transactions , info of whatever // conversation has taken place till // system.out.println("for loop of login"); // system.out.println("message sent is: " + // message); // new thread(new clienttask(message)).start(); // send message users new user has // joined conversation // system.out.println(message); } else { string message = ""; message = "password incorrect"; system.out.println("message sent is: " + message); system.out.println(message); homecoming message; } } } if (!match) { string message = ""; message = "check credentials"; system.out.println("message sent is: " + message); homecoming message; } inputstream.close(); } grab (filenotfoundexception f) { f.printstacktrace(); } grab (ioexception e) { system.out.println(e); } system.out.println("exiting login"); homecoming null; } class servertask implements runnable { string msgreceived; public servertask(string message) { msgreceived = message; } @override public void run() { system.out.println("server task started !!!"); serversocket serversocket = null; seek { serversocket = new serversocket(10000); socket clientsocket = null; while (true) { clientsocket = serversocket.accept(); bufferedreader buffer = new bufferedreader( new inputstreamreader(clientsocket.getinputstream())); msgreceived = buffer.readline(); if (msgreceived.substring(0, 5).equals("login")) { system.out.println("in if status of server task"); string finalmessage = login( msgreceived.substring(5, 10), msgreceived.substring(10, 15), msgreceived.substring(15)); system.out.println("finalmessage " + finalmessage); outputstream os = clientsocket.getoutputstream(); outputstreamwriter osw = new outputstreamwriter(os); bufferedwriter bw = new bufferedwriter(osw); bw.write(finalmessage); bw.flush(); } else { system.out.println("************"); string message = "client started , startup message recieved \n"; outputstream os = clientsocket.getoutputstream(); outputstreamwriter osw = new outputstreamwriter(os); bufferedwriter bw = new bufferedwriter(osw); bw.write(message); bw.flush(); } } } grab (streamcorruptedexception sc) { system.out.println(sc); } grab (ioexception i) { i.printstacktrace(); } } } class clienttask implements runnable { string msgtosend; public clienttask(string message) { msgtosend = message; } @override public void run() { socket sock = new socket(); seek { sock = new socket("127.0.0.1", 10000); outputstreamwriter out = new outputstreamwriter( sock.getoutputstream()); bufferedwriter buffer = new bufferedwriter(out); buffer.write(msgtosend); buffer.flush(); sock.close(); system.out.println("in client task .... message " + msgtosend); } grab (socketexception s) { } grab (ioexception i) { } } } }

your code contains lots of bugs.

you have create separate class client , server.now in code happening suppose happen if client thread start first rather server thread.

clientsocket = serversocket.accept(); come in main thread , whatever object receive serversocket.accept(); come parameter in other thread.so server wait request client in main thread , newly created thread handle client.

java multithreading sockets

No comments:

Post a Comment