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
0
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