java - not able to send byte array from server to client,able to send from client to server -



java - not able to send byte array from server to client,able to send from client to server -

i have task this. create client , server socket interaction accepts byte info , converts byte info data received @ server in string , send response confirmation of info conversation success/unsuccess info passed prepare info length format validation should done @ server end.

as e.g.

there fields ur sending server like,

field 1 - number field 2 - string field 3 floating number i.e. 108.50

after conversion byte string : 152|any msg|108.50

in byte this,

10101|1001010010000000011000000000|1110111011

i have tried next programs this

server.java

public class server extends thread { private serversocket serversocket; public server(int port) throws ioexception { serversocket = new serversocket(port); //serversocket.setsotimeout(100000); } public void run() { while(true) { seek { socket server = serversocket.accept(); byte message[]=null; datainputstream in = new datainputstream(server.getinputstream()); bytearrayoutputstream buffer = new bytearrayoutputstream(); int nread; byte[] info = new byte[16384]; while ((nread = in.read(data, 0, data.length)) != -1) { buffer.write(data, 0, nread); } system.out.println("on line"); //this doesnt printed buffer.flush(); data= buffer.tobytearray(); system.out.println(data); string convertmsg = new string(data); system.out.println("msg converted "+convertmsg); dataoutputstream out = new dataoutputstream(server.getoutputstream()); system.out.println("below dataoutputstream"); out.write("success".getbytes()); server.close(); }catch(sockettimeoutexception s) { system.out.println("socket timed out!"); break; }catch(ioexception e) { e.printstacktrace(); break; } } } public static void main(string [] args) { int port = 4003; seek { thread t = new server(port); t.start(); }catch(ioexception e) { e.printstacktrace(); } } }

client

public class client { public static void main(string args[]) throws ioexception { int userinput =1; while(userinput==1) { string servername = "192.168.0.8"; int port = 4003; seek { system.out.println("connecting " + servername + " on port " + port); socket client = new socket(servername, port); system.out.println("just connected " + client.getremotesocketaddress()); outputstream outtoserver = client.getoutputstream(); dataoutputstream out = new dataoutputstream(outtoserver); system.out.println("above out.wirte()"); out.write("any msg".getbytes()); inputstream infromserver = client.getinputstream(); datainputstream in = new datainputstream(infromserver); bytearrayoutputstream buffer = new bytearrayoutputstream(); int nread; system.out.println("converting array "+in); byte[] info = ioutils.tobytearray(in); system.out.println(data);//this line doesnt printed //system.out.println("server says " + in.readutf()); client.close(); }catch(ioexception e) { e.printstacktrace(); } system.out.println("enter userinput "); datainputstream dis = new datainputstream(system.in); string s = dis.readline(); userinput = integer.parseint(s); } } }

if send info client server in bytes,it reads , prints it.also line "enter userinput " gets printed , if user enters '1' programme continues. problem programme given above. if seek send info server stating "success"(meaning info has been converted bytes string successfully) programme stucks , cursor doesnt go below line in comments "this line doesnt printed".there no error printed , none of programme terminates.i new socket programming , dont understand much networking. help appreciated.

you're reading input until end of stream, peer isn't closing connection, end of stream never arrives.

i suggest read , write lines, or utilize writeutf() , readutf().

java sockets network-programming

Comments

Popular posts from this blog

php - Android app custom user registration and login with cookie using facebook sdk -

django - Access session in user model .save() -

php - .htaccess Multiple Rewrite Rules / Prioritizing -