Sockets Java Avec Communication Continue


Je veux pouvoir faire ce qui suit côté client:

  • Ouvrir la prise
  • Envoyer des données
  • Attendez
  • Envoyer Plus De Données

Et côté serveur:

  • Ouvrir msocket
  • Données de réception
  • Attendez
  • Garder recivieng (boucle encore et encore)

Actuellement, je ne peux pas le faire en boucle : (

J'ai côté client:

Constctor:

s = new Socket(ServerIPAddr, 6100);
out = new ObjectOutputStream(s.getOutputStream());

Fonction de boucle:

    public void sendImage(BufferedImage image){

    System.out.println("Starting to send");
    try {

        ImageIO.write(image, "PNG", out);
        System.out.println("Sent");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } // png is lossless

}

Cela peut être appelé plusieurs fois une après l'autre.

Côté Serveur j'ai consturctor:

    public ServerConnectionThread(Socket clientSocket) {current = clientSocket;}

Exécuter la fonction:

    public void run() {
    int i = 0;
    System.out.println("Connection accepted");
    System.out.println("Threaded spanwed");
    try {ObjectInputStream in = new ObjectInputStream(current.getInputStream());
        while (capturing) {
            ImageIO.write(ImageIO.read(in), "PNG", new File("test" + i++
                    + ".png"));
            in.close();
        }
    } catch (IOException e) {e.printStackTrace();}

}

Quelqu'un sait-il pourquoi cela ne fonctionne que pour la première donnée envoyée? Et refuse de continuosuly l'envoi?

- MISE À JOUR -

while (capturing) {
            BufferedImage b = ImageIO.read(in);
            if(b == null){
                continue;
            }
            ImageIO.write(b, "PNG", new File("test" + i++
                    + ".png"));

        }

Semble résoudre ce problème

Author: LmC, 2013-04-21

1 answers

Pourquoi fermez-vous inputStream ?

Essayez ceci -

 while (capturing) {
            ImageIO.write(ImageIO.read(in), "PNG", new File("test" + i++ ".png"));
            //in.close();
      }
 2
Author: Mohammad Adil, 2013-04-21 12:40:18