J'ai développé un logiciel pour envoyer des fichiers via une connexion TCP/IP en utilisant Java Sockets. Le programme compile, cependant, l'application serveur lance une exception de distribution de classe et les fichiers ne sont pas envoyés au serveur. Toute personne qui pourrait m'aider, je serais très reconnaissant. est au-dessus du code suivant:Java Socket ClassCast Exception
classe serveur:
package filesender;
import java.io.*;
import java.net.*;
public class ServidorTCP {
public static void main(String[] args)
throws IOException, UnknownHostException {
try (ServerSocket socketServer = new ServerSocket(6789)) {
Socket socket = socketServer.accept();
System.out.println("Conexão realizada com o cliente na porta 6789");
byte[] objectAsByte = new byte[socket.getReceiveBufferSize()];
BufferedInputStream bf =
new BufferedInputStream(socket.getInputStream());
bf.read(objectAsByte);
Arquivo arquivo = (Arquivo) getObjectFromByte(objectAsByte);
String dir = arquivo.getDiretorio() + "\\" + arquivo.getNome();
System.out.println("Criando o arquivo: " + dir);
try (FileOutputStream fos = new FileOutputStream(dir)) {
fos.write(arquivo.getConteudo());
}
}
}
private static Object getObjectFromByte(byte[] objectAsByte) {
Object obj = null;
ByteArrayInputStream bis = null;
ObjectInputStream ois = null;
try {
bis = new ByteArrayInputStream(objectAsByte);
ois = new ObjectInputStream(bis);
obj = ois.read();
bis.close();
ois.close();
} catch (IOException e) {
}
return obj;
}
}
classe Client
package filesender;
import java.io.*;
import java.net.*;
public class ClienteTCP {
public static Arquivo arquivo;
private static final long serialVersionUID = 1L;
public static void main(String[] args)
throws IOException, UnknownHostException {
selectFile();
try (Socket clientSocket = new Socket("127.0.0.1", 6789)) {
try (BufferedOutputStream bf =
new BufferedOutputStream(clientSocket.getOutputStream())) {
byte[] bytea = serializeFile();
bf.write(bytea);
bf.flush();
}
}
}
private static void selectFile() {
try {
File file = new File("C:\\Users\\DeveloperEng\\Documents\\"
+ "teste\\arquivo.txt");
byte[] bFile = new byte[(int) file.length()];
try (FileInputStream fis = new FileInputStream(file)) {
fis.read(bFile);
}
arquivo = new Arquivo();
arquivo.setConteudo(bFile);
arquivo.setNome("teste.txt");
arquivo.setDiretorio("C:\\Users\\DeveloperEng\\Documents");
} catch (IOException e) {
}
}
private static byte[] serializeFile() {
ByteArrayOutputStream bao = null;
ObjectOutputStream ous = null;
try {
bao = new ByteArrayOutputStream();
ous = new ObjectOutputStream(bao);
ous.writeObject(arquivo);
//return bao.toByteArray();
} catch (IOException e) {
}
return bao.toByteArray();
}
}
classe File
package filesender;
import java.io.*;
public class Arquivo implements Serializable {
private String nome;
private byte[] conteudo;
private String diretorio;
private static final long serialVersionUID = 1L;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public byte[] getConteudo() {
return conteudo;
}
public void setConteudo(byte[] conteudo) {
this.conteudo = conteudo;
}
public String getDiretorio() {
return diretorio;
}
public void setDiretorio(String diretorio) {
this.diretorio = diretorio;
}
}
Exception lancée par l'IDE:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to filesender.Arquivo
at filesender.ServidorTCP.main(ServidorTCP.java:20)
C:\Users\DeveloperEng\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 5 segundos)
Veuillez ajouter la pile de l'exception. – Berger
Avez-vous passé par [ClassCastException] (https://stackoverflow.com/questions/907360/explanation-of-classcastexception-in-java)? – nullpointer