Monday, 15 June 2015

java - Receiving data from server to client -



java - Receiving data from server to client -

i have these 3 classes, tcpclient, tcpserver , member. using tcpclient send requestpacket object tcpserver, responds string tcpclient. here's code:

tcpserver

import java.io.*; import java.sql.drivermanager; import java.sql.connection; import java.sql.sqlexception; import java.util.linkedhashmap; import java.util.map; import java.io.objectinputstream.getfield; import java.net.*; import data.requestpacket; public class tcpserver { private static linkedhashmap<integer,string> port_database_map = new linkedhashmap(); static{ port_database_map.put(2131,"testing1"); port_database_map.put(6789, "testing2"); } public static void main(string[] args) throws exception { if(args.length==1){ string clientsentence; string capitalizedsentence; new tcpserver().sqlconnectiontest(); serversocket welcomesocket = new serversocket(integer.parseint(args[0])); system.out.println("server running @ "+welcomesocket.getlocalsocketaddress()+" , port "+welcomesocket.getlocalport()); socket connectionsocket = welcomesocket.accept(); inputstream = connectionsocket.getinputstream(); objectinputstream ois = new objectinputstream(is); dataoutputstream outtoclient; //dataoutputstream outtoclient = new dataoutputstream(connectionsocket.getoutputstream()); while(true){ // bufferedreader infromclient = new bufferedreader(new inputstreamreader(connectionsocket.getinputstream())); outtoclient = new dataoutputstream(connectionsocket.getoutputstream()); //clientsentence = infromclient.readline(); requestpacket rp = (requestpacket) ois.readobject(); outtoclient.writeutf(rp.query); outtoclient.flush(); system.out.println("received object "+rp.query); //system.out.println("client sentence "+clientsentence); //capitalizedsentence = getclientresponse(clientsentence); // outtoclient.writebytes(getclientresponse(clientsentence)); } } else{ system.out.println("enter port numnber argument"); system.exit(1); } } public static string getclientresponse(string clientrequest){ homecoming clientrequest.touppercase().trim()+'\n'; } public void sqlconnectiontest(){ string sqlstring; try{ class.forname("com.mysql.jdbc.driver"); system.out.println("mysqljdbc driver registered"); connection connection = drivermanager.getconnection("jdbc:mysql://localhost:8889/testing1","root","root"); if(connection!=null){ system.out.println("you made it!"); }else system.out.println("connection failed"); }catch(classnotfoundexception e){ system.out.println("where mysql jdbc driver? "+e); }catch(sqlexception e){ system.out.println("caught sqlexception "+e); } } }

tcpclient

import java.io.*; import java.net.*; import java.util.scanner; import data.requestpacket; import data.requestpacket.requesttype; public class tcpclient { public static void main(string[] args) throws unknownhostexception, ioexception { if(args.length==1){ string sentence; string modifiedsentence; //bufferedreader infromuser = new bufferedreader(new inputstreamreader(system.in)); socket clientsocket = new socket("0.0.0.0",integer.parseint(args[0])); string query = "select * nothing"; //scanner in = new scanner(system.in); dataoutputstream outtoserver = new dataoutputstream(clientsocket.getoutputstream()); requestpacket rp = new requestpacket(integer.parseint(args[0]), query, requesttype.new_registration); outputstream os = clientsocket.getoutputstream(); objectoutputstream oos = new objectoutputstream(os); /*while(in.hasnextline())*/if(rp.port!=0){ datainputstream infromserver = new datainputstream(clientsocket.getinputstream()); //sentence = in.nextline(); //sentence = "hello, rohan"; system.out.println("sentence "+rp); oos.writeobject(rp); //outtoserver.writeutf(rp+"\n"); //outtoserver.writebytes(sentence+"\n"); oos.flush(); modifiedsentence = infromserver.readline(); system.out.println("done"); system.out.println("from server: "+modifiedsentence); //outtoserver.flush(); } oos.close(); os.close(); clientsocket.close(); }else{ system.out.println("enter port client connect to"); system.exit(1); } } }

requestpacket /* */ bundle data;

import java.io.serializable; /** * @author rohandalvi * */ public class requestpacket implements serializable { public int port; public string query; public requesttype type; public enum requesttype{ new_registration,in_transit_scan,replication,delete_membership,remove_beneficiary } public requestpacket(int port, string query,requesttype type){ this.port = port; this.query = query; this.type = type; } }

when run client, sends requestpacket object tcp server, reason, tcpserver not respond rp.query value client. so, when stop server, see server response printed on client side.

please help if know what's wrong. thanks.

instead of passing inputstream bufferedreader, straight reference datainputstream , read utf there.

sample:

datainputstream infromserver = new datainputstream(clientsocket.getinputstream()); modifiedsentence = infromserver.readutf();

java tcpclient tcpserver

No comments:

Post a Comment