我正在制作一个网络文件传输系统,用于通过java网络传输任何类型的文件。大小也可以是任何种类。因此我使用UTF-8协议来完成任务。通过Java中的Socket传输文件
我提供了我所做的代码,但问题是有些时候文件被转移,因为它是完全没有问题的。但是有时只有几kb的数据在接收端跳过,这实际上限制了mp3/video/image文件的正确打开。我认为问题在于BUFFER。我没有创建任何缓冲区,现在,我认为这可能对我有用。
我真的很感激,如果任何人都可以提供任何有关问题的帮助,以便文件得到充分传输。
客户端:--- >>文件发送方
Socket clientsocket = new Socket(host,6789); // host contains the ip address of the remote server
DataOutputStream outtoserver = new DataOutputStream(clientsocket.getOutputStream());
try
{
int r=0;
FileInputStream fromFile1 = new FileInputStream(path); // "path" is the of the file being sent.
while(r!=-1)
{
r = fromFile1.read();
outtoserver.writeUTF(r+"");
}
}
catch(Exception e)
{
System.out.println(e.toString());
}
clientsocket.close();
服务器端:--- >>文件接收
ServerSocket welcome = new ServerSocket(6789);
Socket conn = welcome.accept();
try
{
String r1 = new String();
int r=0;
FileOutputStream toFile1 = new FileOutputStream(path); // "path" is the of the file being received.
BufferedOutputStream toFile= new BufferedOutputStream(toFile1);
DataInputStream recv = new DataInputStream(conn.getInputStream());
while(r!=-1)
{
r1 = recv.readUTF();
r = Integer.parseInt(r1);
toFile.write(r);
}
}
catch(Exception e)
{
System.out.println(e.toString());
}
如果您使用的是文件,为什么还要编码?只需写入字节。 –