java socket programming problem (sending and receiving data) -


client has sendpoints() method called other class did not include. anyways, sendpoints() called , sends integers server, receives them , send clients connected server(broadcast).

the problem is, clients keep sending integers while server stuck in thread created receiving integers(i think server not reading inputstream).

i tried changing stream, tried putting integers in object , send objectoutputstream none of these seems work. need (pointstruct class holds integer values created)

import java.net.*; import java.util.*; import java.awt.*; import java.io.*; import javax.swing.*;    public class server {       private arraylist dataclient;     private arraylist messageclient;      private serversocket dataserver;     private serversocket messageserver;      public static void main(string[] args) {         server s1 = new server();         s1.start();      }      // start running server     public void start() {         try {             dataserver = new serversocket(4999);             messageserver = new serversocket(5000);             socket dataconn;             socket messageconn;              dataclient = new arraylist();             messageclient = new arraylist();             dataconn= null;             messageconn= null;             system.out.println("[server]start");              //start accepting connections             while (true) {                 try {                 dataconn = dataserver.accept();                 system.out.println("[server]accepted dataconn");                  messageconn = messageserver.accept();                 system.out.println("[server]accepted messageconn");                  //add clients arraylist                  dataclient.add(dataconn.getoutputstream());                  messageclient.add(messageconn.getoutputstream());                  }                 catch (exception ex) {                     ex.printstacktrace();                 }                  //creating receiver threads                 thread t1 = new thread(new datareceiver(dataconn));                 thread t2 = new thread(new messagereceiver(messageconn));                 system.out.println("[server]thread created");                 t1.start();                 t2.start();                 system.out.println("[server]thread started");             }         }         catch(exception ex) {             ex.printstacktrace();         }     }      //receive data clients     public class datareceiver implements runnable {          bufferedreader br;         inputstream is;          int x,y;         int x2,y2;         int t;         int red;         int green;         int blue;         int size;         int dummy;          datareceiver(socket s){             try {                 is=s.getinputstream();                 //br = new bufferedreader(isr);             }             catch(exception ex) {                 ex.printstacktrace();             }         }         public void run() {         while(true) {             try{                  iterator = dataclient.iterator();                 dummy=is.read();                 if(dummy==9999) {                 system.out.println("[server]executing data thread");                 x=is.read();                 system.out.println("[server]read line"+x);                 y=is.read();                 system.out.println("[server]read line"+y);                  //x2=isr.read();                 //y2=isr.read();                 t=is.read();                 red=is.read();                 green=is.read();                 blue=is.read();                 size=is.read();                  dummy=0;                 //broadcast data                  while (it.hasnext()) {                     outputstream os = (outputstream)it.next();                     os.write(9999);                     os.write(x);                     os.write(y);                     os.write(t);                     os.write(255);                     os.write(0);                     os.write(0);                     os.write(size);                 }                 system.out.println("[server]data broadcasted");                 }             }             catch(exception ex) {                 ex.printstacktrace();             }       }     }        }      //------------------------receive message clients------------------------     public class messagereceiver implements runnable {          messagereceiver(socket s) {          }          public void run() {           }      } }     public class networkhandler{     printwriter writer;     bufferedreader reader;     printwriter pwriter;     bufferedreader preader;     socket sock;     socket pointsock;     inputstream is;     jtextarea incoming;     pointhandler ph;      public networkhandler(pointhandler _ph) {         init();         ph=_ph;         setupnetworking();         thread readerthread = new thread(new incomingreader());         readerthread.start();         thread pointerthread = new thread(new receivingpoints());         pointerthread.start();     }      public void init() {         incoming = new jtextarea(20,20);     }     private void setupnetworking() {         try {              // setup message port             system.out.println("networking establish started");             sock = new socket("127.0.0.1",5000);             system.out.println("[nh]port 5000 established");              // setup point port             pointsock = new socket("127.0.0.1",4999);             system.out.println("[nh]port 4999 established");              //message i/o stream             inputstreamreader streamreader = new inputstreamreader(sock.getinputstream());             reader = new bufferedreader(streamreader);             writer = new printwriter(sock.getoutputstream());               //point i/o stream             inputstreamreader pstreamreader = new inputstreamreader(pointsock.getinputstream());             system.out.println("networking establishing: stream");             preader= new bufferedreader(pstreamreader);              pwriter= new printwriter(pointsock.getoutputstream());             system.out.println("networking establishing: stream");         }         catch(ioexception ex) {             ex.printstacktrace();         }         system.out.println("networking established");     }      //send message server     public void writestream(string input){         try {             writer.println(input);              writer.flush();              }         catch(exception ex) {             ex.printstacktrace();         }     }     public jtextarea getservermessage() {         return incoming;     }      //receiving message server     public class incomingreader implements runnable {          @override         public void run() {             string message;             try {                 while ((message = reader.readline())!=null){                     system.out.println("[nh] read server:"+message);                     incoming.append(message+"\n");                 }             }             catch(exception ex) {                 ex.printstacktrace();             }          }      }      //receiving points server     public class receivingpoints implements runnable {          int x,y;         int x2,y2;         int red;         int green;         int blue;         int t;         int size;         int dummy;         pointstruct ps;         color cr;         point p;          synchronized public void run() {             try {                 = pointsock.getinputstream();                 p= new point();             }             catch(exception ex) {                 ex.printstacktrace();             }              while(true) {                 try {                 dummy=is.read();                 if(dummy==9999) {                  x=is.read();                 y=is.read();                  //x2=preader.read();                 //y2=preader.read();                  t=is.read();                 red=is.read();                 green=is.read();                 blue =is.read();                 size=is.read();                       //create dummy pointstruct                   ps = new pointstruct();                 cr = new color(red,green,blue);                  p.x=x;                 p.y=y;                 ps.setp1(p);                 p.x=x2;                 p.y=y2;                 //ps.setp2(p);                 ps.sett((char)t);                 ps.sets(size);                 ps.setc(cr);                  ph.save(ps);                 dummy=0;                 }                  }                    catch(exception ex) {                 ex.printstacktrace();                 }              system.out.println("[nh]receiving done");             }     }}       public void sendpoints(pointstruct ps) {                 outputstream os;         try{             os=pointsock.getoutputstream();             os.write(9999);             os.write(ps.getp1().x);             os.write(ps.getp1().y);             //pwriter.print(ps.getp2().x);             //pwriter.print(ps.getp2().y);              os.write(ps.gett());             os.write(ps.getc().getred());             os.write(ps.getc().getgreen());             os.write(ps.getc().getblue());             os.write(ps.gets());         }         catch(exception ex) {             ex.printstacktrace();         }         system.out.println("[nh]points sent server");     }        } 

you reading stream incorrectly, inputstream.read() returns byte stream, cast int.

inputstream.read() returns values 0 255 read successful, , -1 if no more reading can done (end of stream).

for example, inputstream.read() != 9999 always. receivingpoints.run() block not fire:

while (true) {     try {         dummy = is.read();         if (dummy == 9999) {}     } catch(exception ex) {         ex.printstacktrace();     } } 

you looking datainputstream, has methods reading , writing other basic types bytes.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -