Classe de serveur:
import java.io.*; import java.net.*; public class clientserver { public static void main(String args []) { Socket s=new Socket("localhost",2345); FileOutputStream f=new FileOutputStream("E:\\FEATUREDCOPIED.txt"); DataInputStream din= new DataInputStream(s.getInputStream); byte[] b=new byte[2002]; din.read(b,0,b.length); f.write(b,0,b.length); din.close(); f.close(); s.close(); } }
3 Réponses :
getInputtream code> et
getOutputtream code> sont des méthodes, vous devez donc les appeler, ce qui signifie de mettre entre la parenthèse après leur nom:
s.getinputStream () code> au lieu de juste
s.getinputtream code>. p>
Mind the Paranthèses, puisque vous appelez une méthode dans Socket: s.getoutoutputtream ** () ** code>
s.getinputtream ** () ** p >
** Code corrigé **
Les bugs fixes sont p>
1.Change S.GetInputStream -> S.GetInputStream () P>
2.Change S.GetoutPutStream -> S.GetUPTUTStream () P>
3.Créez une boucle pour la lecture et l'écriture dans le fichier, sinon les données peuvent perdre des données. p>
Classe de serveur p> p> < Pré> xxx pré>
Classe client code>: p>
Fournir un code de copie-pâte sans commentaire est une idée terrible, car elle n'enseigne rien. En outre, vous n'avez même pas réparer la lecture brisée-sans-boucle.
@ Joachim Sauer Je suis incapable de comprendre votre commentaire. Pouvez-vous s'il vous plaît élaborer-le? Ensuite, je peux résoudre ce problème que vous souhaitez spécifier.
Il y a deux problèmes: 1. Vous postez le code sans explication de ce que vous avez fixé, cela n'aide pas à l'apprentissage. 2. Vous appelez lisez code> sans vérifier la valeur de retour.
Lire CODE> n'est pas garanti de lire la longueur totale du
INPUTStream code> et de l'appeler en dehors d'une boucle est presque toujours fausse.
@ Jochimsauer J'ai eu votre point que vous avez raison, j'ai réparé le bogue.