TCP文件下载 , 连接一个下一个
客户端代码
package com.test.test05;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
//创建客户端对象
Socket socket = new Socket("127.0.0.1", 9090);
//创建网络输入流,接收服务端的数据
InputStream netInput = socket.getInputStream();
//创建本地输出流,将文件写到本地
FileOutputStream fos =
new FileOutputStream("G:/Server/" + System.currentTimeMillis() + "car.jpg");
//边读服务端发送过来的数据,边把数据写到本地
byte[] bytes = new byte[1024];
int len;
while ((len=netInput.read(bytes))!=-1){
fos.write(bytes,0,len);
}
fos.close();
socket.close();
}
}
``` java
服务端代码
``` java
package com.test.test05;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TCPServer {
public static void main(String[] args) throws IOException {
//创建线程池
ExecutorService threadPool = Executors.newFixedThreadPool(10);
//创建服务端对象
ServerSocket serverSocket = new ServerSocket(9090);
boolean flag = true;//设立标记,执行到这一步说明有客户端连入
//不断的接受客户端的连接
while (flag) {
//准备接受客户端连接
Socket socket = serverSocket.accept();
threadPool.submit(new DownloadThread(socket));
}
}
}
class DownloadThread implements Runnable {
private Socket socket;
public DownloadThread(Socket socket) {
this.socket = socket;
}
//创建集合对象存放IP地址
HashSet<String> ips = new HashSet<String>();
@Override
public void run() {
try {
//获取本地字节流,从本地加载数据
FileInputStream localInput = new FileInputStream("E:/car.jpg");
//获取网络输出流,向客户端写数据
OutputStream netOut = socket.getOutputStream();
//边读边写
byte[] bytes = new byte[1024];
int len;
while ((len = localInput.read(bytes)) != -1) {
netOut.write(bytes, 0, len);
}
//获得客户IP地址
String ip = socket.getInetAddress().getHostAddress();
if (ips.add(ip)) {
System.out.println("恭喜" + ip + "同学下载成功!!当前下载人数是:" + ips.size());
}
//释放资源
localInput.close();
socket.close();
} catch (Exception e) {
System.out.println("下载失败!原因:" + e.getMessage());
}
}
}
``` java
唯有努力,人生没有白走的路,每一步都算数

浙公网安备 33010602011771号