Java套接字-将文件从客户端发送到服务器
我已经看到了很多将文件从服务器发送到客户端的示例。例如(找到): 服务器:Java套接字-将文件从客户端发送到服务器,java,file,sockets,client,Java,File,Sockets,Client,我已经看到了很多将文件从服务器发送到客户端的示例。例如(找到): 服务器: import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public clas
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Main {
public static void main(String[] args) throws IOException {
ServerSocket servsock = new ServerSocket(123456);
File myFile = new File("s.pdf");
while (true) {
Socket sock = servsock.accept();
byte[] mybytearray = new byte[(int) myFile.length()];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile));
bis.read(mybytearray, 0, mybytearray.length);
OutputStream os = sock.getOutputStream();
os.write(mybytearray, 0, mybytearray.length);
os.flush();
sock.close();
}
}
}
客户:
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.Socket;
public class Main {
public static void main(String[] argv) throws Exception {
Socket sock = new Socket("127.0.0.1", 123456);
byte[] mybytearray = new byte[1024];
InputStream is = sock.getInputStream();
FileOutputStream fos = new FileOutputStream("s.pdf");
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = is.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
bos.close();
sock.close();
}
}
是否有一种方法可以重写此文件或类似的内容,以用于相反的方式,以便客户端可以将文件发送到服务器?是的,可以这样做。对于客户端,您将在本地读取文件并写入服务器的outpustream,而不是从服务器请求文件。在服务器端,您将接受新的连接,并从服务器Inpustream读取客户端发送的内容 只需切换写入和读取代码。此代码是否可用于发送和接收所有类型的文件,如.mp3、.jpeg、.png等?此代码是否可用于发送和接收所有类型的文件,如.mp3、.jpeg、.png等?文件只是字节流。可以发送/接收任何文件。