network programming - Chat Server: Print chat history java -
the problem need show chat history on client side without transferring chat file. server , client on same machine ie pc. server reads char char file , writes on socket. client needs read string exact chat history saved in file. method printing single char in single line
import java.io.*;
class server { public static void main(string dt[]) { serversocket sskt=null;socket skt=null; inputstreamreader isrin=null,isrout=null; bufferedreader brin=null,brout=null;printwriter pw=null; filewriter fw=null;filereader fr=null; datainputstream dis=null;dataoutputstream dos=null; try { sskt=new serversocket(1234); system.out.println("waiting client"); skt=sskt.accept(); system.out.println("connected client"); isrin=new inputstreamreader(skt.getinputstream()); brin=new bufferedreader(isrin); isrout=new inputstreamreader(system.in); brout=new bufferedreader(isrout); pw=new printwriter(skt.getoutputstream(),true); dis=new datainputstream(skt.getinputstream()); dos=new dataoutputstream(skt.getoutputstream()); simpledateformat sdf=new simpledateformat("dd_mm_yy"); date date=new date(); string ing=sdf.format(date); fw=new filewriter(ing+".txt",true); //do{ string str; str=brin.readline(); int c=integer.parseint(str); switch(c) { case 1: { system.out.println("new chat stared"); string msg=""; { simpledateformat sdf1=new simpledateformat("hh:mm:ss"); date d=new date(); string in=sdf1.format(d); msg=brin.readline(); system.out.println("client says " + msg); fw.write("client "+in+" "+msg); msg=brout.readline(); pw.println(msg); fw.write("server "+in+" "+msg); } while(!msg.equals("bye")); fw.close(); break; } case 2: { string d=brin.readline(); file file=new file(d+".txt"); if(file.exists()) { dos.writeboolean(true); system.out.println("displaying contents of file"); fr=new filereader(d+".txt"); int z; while((z=fr.read())!=-1) { pw.println((char)z); } fr.close(); dos.writeboolean(true); //it writes contents of file on socket 1 char char } else { dos.writeboolean(false); } break; } case 3: { system.out.println("client exited"); system.exit(0); break; } default: { system.out.println("invalid choice"); break; } } //}while(true); } catch(exception e) { system.out.println(e); } { try { pw.close(); brin.close(); isrin.close(); skt.close(); sskt.close(); } catch(exception ex) { system.out.println(ex); } } } } class client { public static void main(string dt[]) { socket skt=null; inputstreamreader isrout=null,isrin=null; bufferedreader brout=null,brin=null; printwriter pw=null; dataoutputstream dos=null; datainputstream dis=null; filereader fw=null; try { skt=new socket("127.0.0.1",1234); system.out.println("connected server"); isrout=new inputstreamreader(system.in); brout=new bufferedreader(isrout); pw=new printwriter(skt.getoutputstream(),true); isrin=new inputstreamreader(skt.getinputstream()); brin=new bufferedreader(isrin); dos=new dataoutputstream(skt.getoutputstream()); dis=new datainputstream(skt.getinputstream()); //do //{ system.out.println("1. start chat"); system.out.println("2. view chat history"); system.out.println("3. exit"); string str=""; str=brout.readline(); pw.println(str); int a=integer.parseint(str); switch(a) { case 1: { string msg=""; { msg=brout.readline(); pw.println(msg); msg=brin.readline(); system.out.println("server says " + msg); } while(!msg.equals("bye")); break; } case 2: { system.out.println("enter date of chat history"); string date=brout.readline(); pw.println(date); if(dis.readboolean()) { system.out.println("chat exists"); fw=new filereader("h:\\java programs\\chatser\\chat\\client\\"+date+".txt"); int ab; while((ab=fw.read())!=-1) { system.out.println(brin.readline()); } fw.close(); } //this syntax read socket char char , print 1 char after in next line. need chat history string without copying file @ client side else { system.out.println("incorrect entity"); } break; } case 3: { system.out.println("thank you"); system.exit(0); break; } default: { system.out.println("incorrect entity"); } } //}while(true); } catch(exception e) { system.out.println(e); } { try { pw.close(); brout.close(); isrout.close(); skt.close(); } catch(exception ex) { system.out.println(ex); } } } }
look @ following snippet:
int z; while((z=fr.read())!=-1) { pw.println((char)z); } you converting integer read char, hold single character. not print entire value you're looking for. if want convert integer string printed, try this:
pw.println(integer.tostring(z))
Comments
Post a Comment