TCP UDP文件传输
基于TCP协议,完成客户端向服务器端发送文件,服务器端接收并保存。如D:\demo\a.txt
基于UDP协议,完成客户端向服务器端发送文件,服务器端接收保存。如D:\demo\a.txt
TCP
package TCPrecive;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Sever {
public static void main(String[] args) throws IOException {
//1.创建ServerScocket,监听特定端口
ServerSocket server = new ServerSocket(9000);
//2.等待客户端连接
System.out.println("等待客户端连接");
Socket client = server.accept();
System.out.println("客户端已连接");
//3.获取输入流,传输数据,接收客户数据
InputStream is = client.getInputStream();
//4.输出流用来保存文件
OutputStream os = new FileOutputStream("D:\\demo\\TCPget.txt");
int n = -1;
while(true) {
n = is.read();
os.write(n);
if(n == -1) {
break;
}
}
is.close();
os.close();
}
}
package TCPrecive;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
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链接
Socket client = new Socket("127.0.0.1",9000);
//引入文件输入流,读取文件;
InputStream fis = new FileInputStream("D:\\demo2\\a.txt");
//发送数据,创建一个输出流;
OutputStream os = client.getOutputStream();
//写出文件
byte[] buffer = new byte[1024];
int len;
while((len = fis.read(buffer)) != -1) {
os.write(buffer,0,len);
}
//关闭资源
fis.close();
os.close();
}
}
UDP
package UDPtxt;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.SocketException;
public class Client {
public static void main(String[] args) throws IOException {
DatagramSocket client = new DatagramSocket();
InputStream fis =new FileInputStream("D:\\demo2\\a.txt");
byte[] buf = new byte[fis.available()];
fis.read(buf);
DatagramPacket packet=new DatagramPacket(buf,0,buf.length);
packet.setPort(9000);
packet.setAddress(Inet4Address.getByName("127.0.0.1"));
client.send(packet);
System.out.println("文件已发送");
client.close();
fis.close();
}
}
package UDPtxt;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class Socket {
public static void main(String[] args) throws IOException {
//1.创建DatagramSocket对象,指定端口号;
DatagramSocket socket = new DatagramSocket(9000);
byte[] buf = new byte[2048];
//2.创建DatagramPacket
DatagramPacket packet = new DatagramPacket(buf,buf.length);
System.out.println("准备接受");
//3.阻塞式接收
socket.receive(packet);
byte[] data = packet.getData();
OutputStream fos = new FileOutputStream("D:\\demo\\UDPget.txt");
fos.write(data,0,packet.getLength());
System.out.println("文件已接受");
socket.close();
fos.close();
}
}