题目01
基于TCP协议,完成客户端向服务器端发送文件,服务器端接收并保存。如D:\demo\a.txt
题目02
基于UDP协议,完成客户端向服务器端发送文件,服务器端接收保存。如D:\demo\a.txt
//使用TCP协议
package com.tcp.work;
/*
* 客户端
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client=new Socket("127.0.0.1",8000);
FileInputStream fileInputStream=new FileInputStream("D:\\demo\\a.txt");
BufferedInputStream bufferedInputStream=new BufferedInputStream(fileInputStream);
OutputStream outputStream=client.getOutputStream();
BufferedOutputStream bufferedOutputStream =new BufferedOutputStream(outputStream);
int n=-1;
byte[]clientbyte=new byte[1024];
while((n=bufferedInputStream.read(clientbyte,0,clientbyte.length))!=-1) {
bufferedOutputStream.write(clientbyte,0,n);
bufferedOutputStream.flush();
}
bufferedOutputStream.close();
bufferedInputStream.close();
client.close();
}
}
package com.tcp.work;
/*
*服务器端
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
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 {
@SuppressWarnings("resource")
ServerSocket server =new ServerSocket(8000);
System.out.println("等待连接");
Socket client=server.accept();
System.out.println("连接成功");
InputStream inputStream=client.getInputStream();
FileOutputStream fileOutputStream=new FileOutputStream("D:\\demo\\b.txt");
BufferedOutputStream bufferedOutputStream =new BufferedOutputStream(fileOutputStream);
BufferedInputStream bufferedInputStream=new BufferedInputStream(inputStream);
int n=-1;
byte [] serverbyte =new byte[1024];
while((n=bufferedInputStream.read(serverbyte,0,serverbyte.length))!=-1) {
bufferedOutputStream.write(serverbyte,0,n);
bufferedOutputStream.flush();
}
System.out.println("传输完成");
bufferedOutputStream.close();
inputStream.close();
client.close();
}
}
//使用UDP协议
package com.udp.work;
/*
* 客户端
*/
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class Client {
public static void main(String[] args) throws IOException ,InterruptedException{
FileInputStream fileInputStream = new FileInputStream("D:\\demo\\a.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
DataInputStream dataInputStream = new DataInputStream(bufferedInputStream);
DatagramSocket dataSocket = new DatagramSocket();
byte[] clientbyte = new byte[1024];
int read = 0;
System.out.println("准备发送");
while(true){
if(dataInputStream != null){
read = dataInputStream.read(clientbyte);
}
if(read == -1){
break;
}
DatagramPacket dataPacket = new DatagramPacket(clientbyte,clientbyte.length,InetAddress.getByName("127.0.0.1"), 8000);
dataSocket.send(dataPacket);
}
System.out.println("发送完成");
dataSocket.close();
dataInputStream.close();
bufferedInputStream.close();
fileInputStream.close();
}
}
package com.udp.work;
/*
* 服务器端
*/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class Server {
public static void main(String[] args) throws IOException {
DatagramSocket dataSocket = new DatagramSocket(8000);
FileOutputStream fileOutputStream = new FileOutputStream("D:\\demo\\b.txt");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);
int i = 0;
System.out.println("准备接收");
while(i == 0){
byte[] serverbyte = new byte[1024];
DatagramPacket dataPacket = new DatagramPacket(serverbyte, serverbyte.length);
dataSocket.receive(dataPacket);
i = dataPacket.getLength();
if(i > 0){
dataOutputStream.write(serverbyte,0,i);
dataOutputStream.flush();
i = 0;
}
}
System.out.println("接收完成");
dataOutputStream.close();
bufferedOutputStream.close();
fileOutputStream.close();
dataSocket.close();
}
}