téléchargement du fichier & téléchargement entre client-serveur
J'ai une mission pour créer un client-serveur de transfert de fichiers.
Qui pourrait être un exemple simple. J'ai essayé les exemples de questions similaires dans les forces spéciales, mais ils ont été incapables de transférer le fichier.
J'essaie de communiquer le client et le serveur via les sockets. S'il pouvait y avoir quelqu'un qui pourrait m'aider, je serai heureux.
Le client de télécharger le fichier sur le serveur.Aussi le client peut télécharger le fichier à partir du serveur.C'est comment je pourrais créer l'application.
Ici est le côté client code:
package wdc;
import java.io.*;
import java.io.ByteArrayOutputStream;
import java.net.*;
class TCPClient {
public static void main(String args[]) {
byte[] aByte = new byte[1];
int bytesRead;
Socket clientSocket = null;
InputStream is = null;
try {
clientSocket = new Socket("127.0.0.1", 3248);
is = clientSocket.getInputStream();
} catch (IOException ex) {
//Do exception handling
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (is != null) {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream("C:\\testout.pdf");
bos = new BufferedOutputStream(fos);
bytesRead = is.read(aByte, 0, aByte.length);
do {
baos.write(aByte);
bytesRead = is.read(aByte);
} while (bytesRead != -1);
bos.write(baos.toByteArray());
bos.flush();
bos.close();
clientSocket.close();
} catch (IOException ex) {
//Do exception handling
}
}
}
}
Voici le code côté serveur:
package wds;
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String args[]) {
while (true) {
ServerSocket welcomeSocket = null;
Socket connectionSocket = null;
BufferedOutputStream outToClient = null;
try {
welcomeSocket = new ServerSocket(3248);
connectionSocket = welcomeSocket.accept();
outToClient = new BufferedOutputStream(connectionSocket.getOutputStream());
} catch (IOException ex) {
//Do exception handling
}
if (outToClient != null) {
File myFile = new File("C:\\testserver.pdf");
byte[] mybytearray = new byte[(int) myFile.length()];
FileInputStream fis = null;
try {
fis = new FileInputStream(myFile);
} catch (FileNotFoundException ex) {
//Do exception handling
}
BufferedInputStream bis = new BufferedInputStream(fis);
try {
bis.read(mybytearray, 0, mybytearray.length);
outToClient.write(mybytearray, 0, mybytearray.length);
outToClient.flush();
outToClient.close();
connectionSocket.close();
//File sent, exit the main method
return;
} catch (IOException ex) {
//Do exception handling
}
}
}
}
}
Je ne pouvais pas exécuter ces fichiers source et je ne sais pas pourquoi.
Veuillez préciser "je ne pouvais pas exécuter ces fichiers source" plus en détail. Exactement comment avez-vous tenté? Ce qui se passe exactement à la place?
J'ai eu construit le projet.Il n'y a pas d'erreur.J'ai précisé que chacun comme un projet, côté serveur:wds, côté client:wdc. Lors de la construction du projet dans NetBeans, j'ai défini les classes la classe principale dans chaque projet. Que j'ai essayé de courir, mais le transfert de fichier n'est pas arrivé. Dois-je configurer un serveur sur mon PC. Je sais que je ne dois pas. Est-il un bug dans le présent code, qui le rend incapable de télécharger le fichier à partir du serveur vers le client? Ou toutes autres erreurs que je fais?
comment puis-je ajouter une méthode de chargement pour le client? et aussi comment dois-je modifier le code du serveur, pour recevoir le fichier? merci pour votre aide.
Le code ressemble à l'amende juste peut-être vous devriez envisager de le paquet partie ainsi
OriginalL'auteur el nino | 2011-01-23
Vous devez vous connecter pour publier un commentaire.
J'ai regardé le code et à première vue, il semblait y avoir rien de mal avec elle. Donc, j'ai copié tel qu'il était, a changé le fichier utilisé dans le code du serveur dans un fichier qui existait sur mon système et a couru le code. Il a très bien fonctionné, donc au moins je peux vous assurer que le code est correct et c'est ce qu'il est censé faire. J'ai couru mon code sur une machine Ubuntu, mais je ne suis pas sûr de la façon dont cela peut affecter le résultat.
Juste quelques conseils qui mon aider:
1) etes-vous le TCPServer fichier, puis le TCPClient? (Stupide, je sais, mais on ne sait jamais)
2) Est-il un processus qui peut être en utilisant le port 3248?
3) le processus en cours d'exécution, les fichiers ont la permission de lire/écrire les chemins spécifiés?
4) est-ce que le fichier spécifié dans TCPServer existent réellement?
5) Avez-vous essayer d'exécuter les fichiers de classe en dehors de l'IDE - de toute façon il est bon d'apprendre comment être indépendant de l'IDE.
Espère que cela a été utile et bonne chance avec votre affectation.
OriginalL'auteur Matthew Sant