import java.net.InetAddress;
			import java.net.UnknownHostException;

			public class MyInetAddressDemo1 {
				public static void main(String[] args) throws UnknownHostException {
			/*
					static InetAddress getByName(String host)  确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
					String getHostName()                        获取此IP地址的主机名
					String getHostAddress()                     返回文本显示中的IP地址字符串
			*/


		  //1.获取InetAddress的对象
			//IP的对象 一台电脑的对象
			InetAddress address = InetAddress.getByName("DESKTOP-5OJJSAM");
			System.out.println(address);

			String name = address.getHostName();
			System.out.println(name);//DESKTOP-5OJJSAM

			String ip = address.getHostAddress();
			System.out.println(ip);//192.168.1.100

			}
			}
				
			
				
			import java.io.IOException;
			import java.net.DatagramPacket;
			import java.net.DatagramSocket;
			import java.net.InetAddress;

			public class ReceiveMessageDemo {
				public static void main(String[] args) throws IOException {
					//接收数据



			//1.创建DatagramSocket对象(快递公司)
			//细节:
			//在接收的时候,一定要绑定端口
			//而且绑定的端口一定要跟发送的端口保持一致
			DatagramSocket ds = new DatagramSocket(10086);


			//2.接收数据包
			byte[] bytes = new byte[1024];
			DatagramPacket dp = new DatagramPacket(bytes,bytes.length);


			//该方法是阻塞的
			//程序执行到这一步的时候,会在这里死等
			//等发送端发送消息
			System.out.println(11111);
			ds.receive(dp);
			System.out.println(2222);


			//3.解析数据包
			byte[] data = dp.getData();
			int len = dp.getLength();
			InetAddress address = dp.getAddress();
			int port = dp.getPort();

			System.out.println("接收到数据" + new String(data,0,len));
			System.out.println("该数据是从" + address + "这台电脑中的" + port + "这个端口发出的");

			//4.释放资源
			ds.close();


			}
			}

				
			
				
			import java.io.IOException;
			import java.net.*;

			public class SendMessageDemo {
				public static void main(String[] args) throws IOException {
					//发送数据


			//1.创建DatagramSocket对象(快递公司)
			//细节:
			//绑定端口,以后我们就是通过这个端口往外发送
			//空参:所有可用的端口中随机一个进行使用
			//有参:指定端口号进行绑定
			DatagramSocket ds = new DatagramSocket();

			//2.打包数据
			String str = "你好威啊!!!";
			byte[] bytes = str.getBytes();
			InetAddress address = InetAddress.getByName("127.0.0.1");
			int port = 10086;

			DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);

			//3.发送数据
			ds.send(dp);


			//4.释放资源
			ds.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.net.DatagramPacket;
			import java.net.DatagramSocket;

			public class ReceiveMessageDemo {
				public static void main(String[] args) throws IOException {
					/*
				按照下面的要求实现程序
					UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
					UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
			*/


			//1.创建对象DatagramSocket的对象
			DatagramSocket ds = new DatagramSocket(10086);

			//2.接收数据包
			byte[] bytes = new byte[1024];
			DatagramPacket dp = new DatagramPacket(bytes,bytes.length);

			while (true) {
				ds.receive(dp);

				//3.解析数据包
				byte[] data = dp.getData();
				int len = dp.getLength();
				String ip = dp.getAddress().getHostAddress();
				String name = dp.getAddress().getHostName();

				//4.打印数据
				System.out.println("ip为:" + ip + ",主机名为:" + name + "的人,发送了数据:" + new String(data,0,len));
			}


			}
			}
				
			
				
			import java.io.IOException;
			import java.net.*;
			import java.util.Scanner;

			public class SendMessageDemo {
				public static void main(String[] args) throws IOException {
					 /*
				按照下面的要求实现程序
					UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
					UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
			*/


			//1.创建对象DatagramSocket的对象
			DatagramSocket ds = new DatagramSocket();

			//2.打包数据
			Scanner sc = new Scanner(System.in);
			while (true) {
				System.out.println("请输入您要说的话:");
				String str = sc.nextLine();
				if("886".equals(str)){
					break;
				}
				byte[] bytes = str.getBytes();
				InetAddress address = InetAddress.getByName("255.255.255.255");
				int port = 10086;
				DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);
				//3.发送数据
				ds.send(dp);
			}


			//4.释放资源
			ds.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.net.DatagramPacket;
			import java.net.InetAddress;
			import java.net.MulticastSocket;

			public class ReceiveMessageDemo1 {
				public static void main(String[] args) throws IOException {
					/*
				组播接收端代码
			*/


			//1. 创建MulticastSocket对象
			MulticastSocket ms = new MulticastSocket(10000);

			//2. 将将当前本机,添加到224.0.0.1的这一组当中
			InetAddress address = InetAddress.getByName("224.0.0.1");
			ms.joinGroup(address);

			//3. 创建DatagramPacket数据包对象
			byte[] bytes = new byte[1024];
			DatagramPacket dp = new DatagramPacket(bytes, bytes.length);

			//4. 接收数据
			ms.receive(dp);

			//5. 解析数据
			byte[] data = dp.getData();
			int len = dp.getLength();
			String ip = dp.getAddress().getHostAddress();
			String name = dp.getAddress().getHostName();

			System.out.println("ip为:" + ip + ",主机名为:" + name + "的人,发送了数据:" + new String(data,0,len));

			//6. 释放资源
			ms.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.net.DatagramPacket;
			import java.net.InetAddress;
			import java.net.MulticastSocket;

			public class ReceiveMessageDemo2 {
				public static void main(String[] args) throws IOException {
					/*
				组播接收端代码
			*/


			//1. 创建MulticastSocket对象
			MulticastSocket ms = new MulticastSocket(10000);

			//2. 将将当前本机,添加到224.0.0.1的这一组当中
			InetAddress address = InetAddress.getByName("224.0.0.1");
			ms.joinGroup(address);

			//3. 创建DatagramPacket数据包对象
			byte[] bytes = new byte[1024];
			DatagramPacket dp = new DatagramPacket(bytes, bytes.length);

			//4. 接收数据
			ms.receive(dp);

			//5. 解析数据
			byte[] data = dp.getData();
			int len = dp.getLength();
			String ip = dp.getAddress().getHostAddress();
			String name = dp.getAddress().getHostName();

			System.out.println("ip为:" + ip + ",主机名为:" + name + "的人,发送了数据:" + new String(data,0,len));

			//6. 释放资源
			ms.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.net.DatagramPacket;
			import java.net.InetAddress;
			import java.net.MulticastSocket;

			public class ReceiveMessageDemo3 {
				public static void main(String[] args) throws IOException {
					/*
				组播接收端代码
			*/


			//1. 创建MulticastSocket对象
			MulticastSocket ms = new MulticastSocket(10000);

			//2. 将将当前本机,添加到224.0.0.2的这一组当中
			InetAddress address = InetAddress.getByName("224.0.0.2");
			ms.joinGroup(address);

			//3. 创建DatagramPacket数据包对象
			byte[] bytes = new byte[1024];
			DatagramPacket dp = new DatagramPacket(bytes, bytes.length);

			//4. 接收数据
			ms.receive(dp);

			//5. 解析数据
			byte[] data = dp.getData();
			int len = dp.getLength();
			String ip = dp.getAddress().getHostAddress();
			String name = dp.getAddress().getHostName();

			System.out.println("ip为:" + ip + ",主机名为:" + name + "的人,发送了数据:" + new String(data,0,len));

			//6. 释放资源
			ms.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.net.DatagramPacket;
			import java.net.InetAddress;
			import java.net.MulticastSocket;

			public class SendMessageDemo {
				public static void main(String[] args) throws IOException {
					 /*
				组播发送端代码
			*/

			//创建MulticastSocket对象
			MulticastSocket ms = new MulticastSocket() ;

			// 创建DatagramPacket对象
			String s = "你好,你好!" ;
			byte[] bytes = s.getBytes();
			InetAddress address = InetAddress.getByName("224.0.0.1");
			int port = 10000;

			DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, address, port) ;

			// 调用MulticastSocket发送数据方法发送数据
			ms.send(datagramPacket);

			// 释放资源
			ms.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.io.OutputStream;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
					//TCP协议,发送数据

			//1.创建Socket对象
			//细节:在创建对象的同时会连接服务端
			//      如果连接不上,代码会报错
			Socket socket = new Socket("127.0.0.1",10000);


			//2.可以从连接通道中获取输出流
			OutputStream os = socket.getOutputStream();
			//写出数据
			os.write("aaa".getBytes());

			//3.释放资源
			os.close();
			socket.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.io.InputStream;
			import java.net.ServerSocket;
			import java.net.Socket;

			public class Server {
				public static void main(String[] args) throws IOException {
			//TCP协议,接收数据

			//1.创建对象ServerSocker
			ServerSocket ss = new ServerSocket(10000);

			//2.监听客户端的链接
			Socket socket = ss.accept();

			//3.从连接通道中获取输入流读取数据
			InputStream is = socket.getInputStream();
			int b;
			while ((b = is.read()) != -1){
				System.out.println((char) b);
			}

			//4.释放资源
			socket.close();
			ss.close();

			}
			}
				
			
				
			import java.io.IOException;
			import java.io.OutputStream;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
					//TCP协议,发送数据

			//1.创建Socket对象
			//细节:在创建对象的同时会连接服务端
			//      如果连接不上,代码会报错
			Socket socket = new Socket("127.0.0.1",10000);


			//2.可以从连接通道中获取输出流
			OutputStream os = socket.getOutputStream();
			//写出数据
			os.write("你好你好".getBytes());//12字节

			//3.释放资源
			os.close();
			socket.close();


			}
			}
				
			
				
			import java.io.BufferedReader;
			import java.io.IOException;
			import java.io.InputStream;
			import java.io.InputStreamReader;
			import java.net.ServerSocket;
			import java.net.Socket;

			public class Server {
				public static void main(String[] args) throws IOException {
					//TCP协议,接收数据

			//1.创建对象ServerSocker
			ServerSocket ss = new ServerSocket(10000);

			//2.监听客户端的链接
			Socket socket = ss.accept();

			//3.从连接通道中获取输入流读取数据
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);

		   // BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

			int b;
			while ((b = br.read()) != -1){
				System.out.print((char) b);
			}

			//4.释放资源
			socket.close();
			ss.close();

		}
	}
				
			
				
			import java.io.IOException;
			import java.io.OutputStream;
			import java.net.Socket;
			import java.util.Scanner;

			public class Client {
				public static void main(String[] args) throws IOException {
					//客户端:多次发送数据
			//服务器:接收多次接收数据,并打印


			//1. 创建Socket对象并连接服务端
			Socket socket = new Socket("127.0.0.1",10000);

			//2.写出数据
			Scanner sc = new Scanner(System.in);
			OutputStream os = socket.getOutputStream();


			while (true) {
				System.out.println("请输入您要发送的信息");
				String str = sc.nextLine();
				if("886".equals(str)){
					break;
				}
				os.write(str.getBytes());
			}


			//3.释放资源
			socket.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.io.InputStreamReader;
			import java.net.ServerSocket;
			import java.net.Socket;

			public class Server {
				public static void main(String[] args) throws IOException {
					//客户端:多次发送数据
			//服务器:接收多次接收数据,并打印

			//1.创建对象绑定10000端口
			ServerSocket ss = new ServerSocket(10000);

			//2.等待客户端来连接
			Socket socket = ss.accept();

			//3.读取数据
			InputStreamReader isr = new InputStreamReader(socket.getInputStream());
			int b;
			while ((b = isr.read()) != -1){
				System.out.print((char)b);
			}

			//4.释放资源
			socket.close();
			ss.close();
			}
			}
				
			
				
			import java.io.IOException;
			import java.io.InputStream;
			import java.io.InputStreamReader;
			import java.io.OutputStream;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
			//客户端:发送一条数据,接收服务端反馈的消息并打印
			//服务器:接收数据并打印,再给客户端反馈消息



			//1.创建Socket对象并连接服务端
			Socket socket = new Socket("127.0.0.1",10000);


			//2.写出数据
			String str = "见到你很高兴!";
			OutputStream os = socket.getOutputStream();
			os.write(str.getBytes());

			//写出一个结束标记
			socket.shutdownOutput();


			//3.接收服务端回写的数据
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			int b;
			while ((b = isr.read()) != -1){
				System.out.print((char)b);
			}


			//释放资源
			socket.close();


			}
			}
				
			
				
			import java.io.IOException;
			import java.io.InputStream;
			import java.io.InputStreamReader;
			import java.io.OutputStream;
			import java.net.ServerSocket;
			import java.net.Socket;

			public class Server {
				public static void main(String[] args) throws IOException {
			//客户端:发送一条数据,接收服务端反馈的消息并打印
			//服务器:接收数据并打印,再给客户端反馈消息


			//1.创建对象并绑定10000端口
			ServerSocket ss = new ServerSocket(10000);

			//2.等待客户端连接
			Socket socket = ss.accept();

			//3.socket中获取输入流读取数据
			InputStream is = socket.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			int b;
			//细节:
			//read方法会从连接通道中读取数据
			//但是,需要有一个结束标记,此处的循环才会停止
			//否则,程序就会一直停在read方法这里,等待读取下面的数据
			while ((b = isr.read()) != -1){
				System.out.println((char)b);
			}

			//4.回写数据
			String str = "到底有多开心?";
			OutputStream os = socket.getOutputStream();
			os.write(str.getBytes());

			//释放资源
			socket.close();
			ss.close();


			}
			}
				
			
				
			import java.io.*;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1. 创建Socket对象,并连接服务器
			Socket socket = new Socket("127.0.0.1",10000);

			//2.读取本地文件中的数据,并写到服务器当中
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("mysocketnet\\clientdir\\a.jpg"));
			BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
			byte[] bytes = new byte[1024];
			int len;
			while ((len = bis.read(bytes)) != -1){
				bos.write(bytes,0,len);
			}

			//往服务器写出结束标记
			socket.shutdownOutput();


			//3.接收服务器的回写数据
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String line = br.readLine();
			System.out.println(line);


			//4.释放资源
			socket.close();

			}
			}
				
			
				
			import java.io.*;
			import java.net.ServerSocket;
			import java.net.Socket;

			public class Server {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1.创建对象并绑定端口
			ServerSocket ss = new ServerSocket(10000);

			//2.等待客户端来连接
			Socket socket = ss.accept();

			//3.读取数据并保存到本地文件中
			BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("mysocketnet\\serverdir\\a.jpg"));
			int len;
			byte[] bytes = new byte[1024];
			while ((len = bis.read(bytes)) != -1){
				bos.write(bytes,0,len);
			}
			bos.close();
			//4.回写数据
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			bw.write("上传成功");
			bw.newLine();
			bw.flush();

			//5.释放资源
			socket.close();
			ss.close();
			}
			}
				
			
				
			import java.io.*;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1. 创建Socket对象,并连接服务器
			Socket socket = new Socket("127.0.0.1",10000);

			//2.读取本地文件中的数据,并写到服务器当中
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("mysocketnet\\clientdir\\a.jpg"));
			BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
			byte[] bytes = new byte[1024];
			int len;
			while ((len = bis.read(bytes)) != -1){
				bos.write(bytes,0,len);
			}

			//往服务器写出结束标记
			socket.shutdownOutput();


			//3.接收服务器的回写数据
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String line = br.readLine();
			System.out.println(line);


			//4.释放资源
			socket.close();

			}
			}
				
			
				
			import java.io.*;
			import java.net.ServerSocket;
			import java.net.Socket;
			import java.util.UUID;

			public class Server {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1.创建对象并绑定端口
			ServerSocket ss = new ServerSocket(10000);

			//2.等待客户端来连接
			Socket socket = ss.accept();

			//3.读取数据并保存到本地文件中
			BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
			String name = UUID.randomUUID().toString().replace("-", "");
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("mysocketnet\\serverdir\\" + name + ".jpg"));
			int len;
			byte[] bytes = new byte[1024];
			while ((len = bis.read(bytes)) != -1) {
				bos.write(bytes, 0, len);
			}
			bos.close();
			//4.回写数据
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			bw.write("上传成功");
			bw.newLine();
			bw.flush();

			//5.释放资源
			socket.close();
			ss.close();
			}
			}
				
			
				
			import java.util.UUID;

			public class UUIDTest {
				public static void main(String[] args) {
					String str = UUID.randomUUID().toString().replace("-", "");
					System.out.println(str);//9f15b8c356c54f55bfcb0ee3023fce8a
				}
			}
						
			
				
			import java.io.*;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1. 创建Socket对象,并连接服务器
			Socket socket = new Socket("127.0.0.1",10000);

			//2.读取本地文件中的数据,并写到服务器当中
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("mysocketnet\\clientdir\\a.jpg"));
			BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
			byte[] bytes = new byte[1024];
			int len;
			while ((len = bis.read(bytes)) != -1){
				bos.write(bytes,0,len);
			}

			//往服务器写出结束标记
			socket.shutdownOutput();


			//3.接收服务器的回写数据
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String line = br.readLine();
			System.out.println(line);


			//4.释放资源
			socket.close();

			}
			}
				
			
				
			import java.io.*;
			import java.net.Socket;
			import java.util.UUID;

			public class MyRunnable implements Runnable{

			Socket socket;

			public MyRunnable(Socket socket){
				this.socket = socket;
			}

			@Override
			public void run() {
				try {
				//3.读取数据并保存到本地文件中
				BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
				String name = UUID.randomUUID().toString().replace("-", "");
				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("mysocketnet\\serverdir\\" + name + ".jpg"));
				int len;
				byte[] bytes = new byte[1024];
				while ((len = bis.read(bytes)) != -1) {
					bos.write(bytes, 0, len);
				}
				bos.close();
				//4.回写数据
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
				bw.write("上传成功");
				bw.newLine();
				bw.flush();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				//5.释放资源
			   if(socket != null){
				   try {
					   socket.close();
				   } catch (IOException e) {
					   e.printStackTrace();
				   }
			   }
			}
			}
			}
				
			
				
			import java.io.IOException;
			import java.net.ServerSocket;
			import java.net.Socket;

			public class Server {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1.创建对象并绑定端口
			ServerSocket ss = new ServerSocket(10000);

			while (true) {
				//2.等待客户端来连接
				Socket socket = ss.accept();

				//开启一条线程
				//一个用户就对应服务端的一条线程
				new Thread(new MyRunnable(socket)).start();
			}

			}
			}
				
			
				
			import java.io.*;
			import java.net.Socket;

			public class Client {
				public static void main(String[] args) throws IOException {
			//客户端:将本地文件上传到服务器。接收服务器的反馈。
			//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//1. 创建Socket对象,并连接服务器
			Socket socket = new Socket("127.0.0.1",10000);

			//2.读取本地文件中的数据,并写到服务器当中
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream("mysocketnet\\clientdir\\a.jpg"));
			BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
			byte[] bytes = new byte[1024];
			int len;
			while ((len = bis.read(bytes)) != -1){
				bos.write(bytes,0,len);
			}

			//往服务器写出结束标记
			socket.shutdownOutput();


			//3.接收服务器的回写数据
			BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String line = br.readLine();
			System.out.println(line);


			//4.释放资源
			socket.close();

			}
			}
				
			
				
			import java.io.*;
			import java.net.Socket;
			import java.util.UUID;

			public class MyRunnable implements Runnable{

				Socket socket;

				public MyRunnable(Socket socket){
					this.socket = socket;
				}

				@Override
				public void run() {
					try {
				//3.读取数据并保存到本地文件中
				BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
				String name = UUID.randomUUID().toString().replace("-", "");
				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("mysocketnet\\serverdir\\" + name + ".jpg"));
				int len;
				byte[] bytes = new byte[1024];
				while ((len = bis.read(bytes)) != -1) {
					bos.write(bytes, 0, len);
				}
				bos.close();
				//4.回写数据
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
				bw.write("上传成功");
				bw.newLine();
				bw.flush();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				//5.释放资源
			   if(socket != null){
				   try {
					   socket.close();
				   } catch (IOException e) {
					   e.printStackTrace();
				   }
			   }
			}
			}
			}
				
			
				
			import java.io.IOException;
			import java.net.ServerSocket;
			import java.net.Socket;
			import java.util.concurrent.ArrayBlockingQueue;
			import java.util.concurrent.Executors;
			import java.util.concurrent.ThreadPoolExecutor;
			import java.util.concurrent.TimeUnit;

			public class Server {
				public static void main(String[] args) throws IOException {
					//客户端:将本地文件上传到服务器。接收服务器的反馈。
					//服务器:接收客户端上传的文件,上传完毕之后给出反馈。


			//创建线程池对象
			ThreadPoolExecutor pool = new ThreadPoolExecutor(
					3,//核心线程数量
					16,//线程池总大小
					60,//空闲时间
					TimeUnit.SECONDS,//空闲时间(单位)
					new ArrayBlockingQueue<>(2),//队列
					Executors.defaultThreadFactory(),//线程工厂,让线程池如何创建线程对象
					new ThreadPoolExecutor.AbortPolicy()//阻塞队列
			);



			//1.创建对象并绑定端口
			ServerSocket ss = new ServerSocket(10000);

			while (true) {
				//2.等待客户端来连接
				Socket socket = ss.accept();

				//开启一条线程
				//一个用户就对应服务端的一条线程
				//new Thread(new MyRunnable(socket)).start();
				pool.submit(new MyRunnable(socket));
			}

			}
			}
				
			
单词