L'envoi d'un fichier texte à partir du serveur vers le client à l'aide de sockets java
C'est une affectation.
Im la recherche d'un peu de conseils pour savoir où je vais mal ici. Mon but est de lire le texte à partir d'un fichier, l'envoyer au serveur, puis d'écrire du texte dans un nouveau fichier.
Problème étant que je ne suis pas exactement sûr de savoir comment faire, j'ai regardé de nombreux exemples, dont aucun n'est une grande aide.
Pour expliquer le programme tel qu'il est. L'utilisateur sera invité à entrer un code qui se rapporte à une si proclamation de ce code. Celui que je veux me concentrer sur est code 200 qui est de l'upload de fichier de code serveur.
Lorsque j'exécute le code que j'ai, je reçois ce message d'erreur ci-dessous. Quelqu'un pourrait-il m'expliquer où je vais mal, je l'apprécierais.
Connection request made
Enter Code: 100 = Login, 200 = Upload, 400 = Logout:
200
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at MyStreamSocket.receiveMessage(MyStreamSocket.java:50)
at EchoClientHelper2.getEcho(EchoClientHelper2.java:34)
at EchoClient2.main(EchoClient2.java:99)
Et cette erreur sur le serveur:
Waiting for a connection.
connection accepted
message received: 200
java.net.SocketException: Socket is not connected
at java.net.Socket.getInputStream(Unknown Source)
at EchoServer2.main(EchoServer2.java:71)
Vous devez vous connecter pour publier un commentaire.
Votre
MyStreamSocket
classe n'a pas besoin de s'étendre Socket. Le mystérieux message d'erreur est parce que le Socket représenté par MyStreamSocket est jamais connecté à rien. La Prise référencé par sonsocket
membre est celui qui est connecté. C'est pourquoi, lorsque vous obtenez le flux d'entrée de MyStreamSocket il vraiment n'est pas connecté. Cela provoque une erreur, ce qui signifie que le client s'arrête. Qui provoque la prise de fermer, que le serveur dûment rapportsL'utilisation de BufferedReader va vous causer des problèmes. Il lit toujours autant qu'il le peut dans sa mémoire tampon, donc, au début d'un transfert de fichier, il lit la "200" message et puis les premiers Ko du fichier envoyé des qui sera analysée comme données de caractère. Le résultat sera tout un tas de bugs.
Je vous suggère de se débarrasser de BufferedReader dès maintenant et utilisez DataInputStream et DataOutputStream à la place. Vous pouvez utiliser le writeUTF et readUTF méthodes pour envoyer vos commandes textuelles. Pour envoyer le fichier, je dirais même un simple morceau de codage.
Il est probablement plus facile si je vous donne le code.
Le premier de votre classe client.
Alors votre serveur de classe:
Puis le StreamSocket classe:
Fossé de l ' "aide" de la classe. Il n'est pas de vous aider.