我在java中编写Client-Server编码,客户端使用writeUTF发送文件名,服务器接收数据,然后从服务器获取文件。你能给我一些建议吗?我不知道我做错了什么,它不起作用。谢谢:))
此方法位于Client.java
public void enviarFichero(String file, String server, int port)
{
// open a socket
Socket socket = openSocket(server, port);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] data = Files.readAllBytes(file);
DataOutputStream dos = new DataOutputStream(baos.write(data));
dos.writeUTF();
}
这是在Server.java
中ByteArrayInputStream bais = new ByteArrayInputStream( almacen );
DataInputStream dis = new DataInputStream( bais );
filename = dis.readUTF();
System.out.println("Receiving files "+filename+" from "+dirIPCliente.getHostName()+":"+clientPort);
// Open destination file
filtroDestino = new BufferedOutputStream(new FileOutputStream(nombreFichero));
答案 0 :(得分:0)
您的代码是否编译而不起作用,或者javac
会返回错误吗?
如果它不能编译,可能有一些可能是罪魁祸首:
Files.readAllBytes()
将java.nio.file.Path
作为参数,而不是String
。 Path
可以使用
java.nio.file.FileSystems.getDefault().getPath( /* insert file path String here */ )
DataOutputStream
在其构造函数中执行java.io.OutputStream
,而ByteArrayOutputStream.write(...)
返回void
。
DataOutputStream.writeUTF(...)
需要String
参数。
如果你的代码编译但不起作用,可能是因为:
BufferedInputStream
和FileInputStream
openSocket(...)
或您的其他地方
服务器的代码。你也可以发布这些吗?此外,您可能希望阅读有关文件输入/输出和网络的官方Javadoc:
文件I / O:http://docs.oracle.com/javase/7/docs/api/java/nio/file/package-summary.html
网络:http://docs.oracle.com/javase/7/docs/api/java/net/package-summary.html