Java实现客户端、服务器文件上传功能。
1.客户端的代码
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("C:\\Users\\cs\\Desktop\\1.jpg");
Socket socket=new Socket("127.0.0.1",8887);
OutputStream os=socket.getOutputStream();
byte[] b=new byte[1024];
int len=0;
while ((len=fis.read(b))!=-1){
os.write(b,0,len);
}
socket.shutdownOutput();
InputStream is=socket.getInputStream();
while ((len=is.read(b))!=-1){
System.out.println(new String(b,0,len));
}
fis.close();
socket.close();
}
}
2.服务器代码
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(8887);
//让服务器一直处于监听状态(死循环accept方法),有一个客户上传文件就保存文件
while (true){
final Socket socket=serverSocket.accept();
//使用多线程提高程序效率,有一个客户上传文件就开一个线程,完成文件的上传
new Thread(new Runnable() {
@Override
public void run() {
try {
File file=new File("C:\\Users\\cs\\Desktop\\downlode");
if (!file.exists()){
file.mkdirs();
}
/*自定义命名规则,防止文件被覆盖
* */
String filename="itcast"+System.currentTimeMillis()+new Random().nextInt(99999)+".jpg";
FileOutputStream fos=new FileOutputStream(file+"\\"+filename);
InputStream ips= socket.getInputStream();
int len=0;
byte[] bytes=new byte[1024];
while ((len=ips.read(bytes))!=-1){
fos.write(bytes,0,len);
}
OutputStream ops= socket.getOutputStream();
ops.write("上传成功".getBytes());
fos.close();
socket.close();
}catch (IOException e){
System.out.println(e);
}
}
}).start();
}
}
}