客户发送端
package com.socket;
import java.io.*;
import java.net.Socket;
//发送端
public class TPCClient1Dome {
public static void main(String[] args) throws IOException {
//创建TCP连接
Socket socket = new Socket("127.0.0.1", 6000);
//获取网络输出流
OutputStream outputStream = socket.getOutputStream();
//本地输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Administrator\\Desktop\\1.jpg"));
//包装输出流
BufferedOutputStream bos = new BufferedOutputStream(outputStream);
int b;
while ((b = bis.read())!=-1){
bos.write(b);
}
//断开网络输出流
socket.shutdownOutput();
//接收返回消息
InputStream inputStream = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = br.readLine())!=null){
System.out.println(line);
}
socket.close();
}
}
服务接收端
package com.socket;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;
//服务端接收端
public class TPCService1Dome {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(6000);
//使用线程池
ThreadPoolExecutor pool = new ThreadPoolExecutor(
5,
10,
60,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(5),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
while (true){
//等待客户端连接
Socket accept = serverSocket.accept();
//来一个开启一个线程任务
ThreadJob threadJob = new ThreadJob(accept);
// threadJob.start();
pool.submit(threadJob);
}
}
}
线程任务处理封装类
package com.socket;
import java.io.*;
import java.net.Socket;
import java.util.UUID;
public class ThreadJob extends Thread{
private Socket accept;
public ThreadJob(Socket accept) {
this.accept = accept;
}
@Override
public void run() {
BufferedOutputStream bos = null;
try {
InputStream inputStream = accept.getInputStream();
//网络输入流
BufferedInputStream bis = new BufferedInputStream(inputStream);
//本地输出流
bos = new BufferedOutputStream(new FileOutputStream("D:\\" + UUID.randomUUID().toString() +".jpg"));
int b;
while ((b = bis.read())!=-1){
bos.write(b);
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(accept.getOutputStream()));
bw.write("上传成功"+Thread.currentThread().getName());
bw.newLine();
bw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
accept.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}