Java.net
TCP实现文件上传
//客户端
public class TcpClientDemo {
public static void main(String[] args) throws Exception {
//创建一个socket
Socket socket = new Socket("127.0.0.1",8080);
//获得输出流
OutputStream outputStream = socket.getOutputStream();
//创建一个文件流 读取文件
FileInputStream fis = new FileInputStream(
new File("demo.txt")
);
byte[] buffer = new byte[1024];
int len;
//通过socket写出文件
while ((len = fis.read(buffer)) != -1){
outputStream.write(buffer,0,len);
}
System.out.println("文件发送完毕");
socket.shutdownOutput();
//关闭资源
fis.close();
outputStream.close();
socket.close();
}
}
//服务器端
public class TcpServerDemo {
public static void main(String[] args) throws Exception {
//创建服务
ServerSocket serverSocket = new ServerSocket(8080);
//监听客户端连接
Socket socket = serverSocket.accept();
//获取输入流
InputStream inputStream = socket.getInputStream();
//创建文件输出流
FileOutputStream fos = new FileOutputStream(
new File("uploadind.txt")
);
//输出IP
System.out.println("InetAddress-->"+socket.getInetAddress());
byte[] buffer = new byte[1024];
int len;
//读取传输过来的文件
while ((len = inputStream.read(buffer)) != -1){
fos.write(buffer,0,len);
}
System.out.println("文件接受完毕");
socket.shutdownInput();
//关闭资源
fos.close();
inputStream.close();
serverSocket.close();
}
}
Tomcat
https://tomcat.apache.org/ 官网
UDP 实现发送数据 接受数据
//发送端
public class UDPSender {
public static void main(String[] args) throws Exception {
//创建一个socket
DatagramSocket socket = new DatagramSocket(8888);
//准备数据,在控制台System.in
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in)
);
//一直接受控制台数据
while (true){
String data = bufferedReader.readLine();
byte[] datas = data.getBytes();
//装换成字节 发送
DatagramPacket datagramPacket =
new DatagramPacket(datas,0,datas.length,
new InetSocketAddress("localhost", 6666));
//发送包裹
socket.send(datagramPacket);
//推出
if (data.equals("bye")){
break;
}
}
//关闭资源
socket.close();
}
}
//接受端
public class UDPReceive {
public static void main(String[] args) throws Exception {
//创建socket 端口6666
DatagramSocket socket = new DatagramSocket(6666);
//死循环接受
while (true){
//准备接受包裹
byte[] container = new byte[1024];
DatagramPacket packet = new DatagramPacket(container,0,container.length);
//阻塞 接受
socket.receive(packet);
//拿到包裹 转为String
byte[] data = packet.getData();
String receiveData = new String(data, 0, data.length);
System.out.println(receiveData);
//收到 bye 结束死循环
if (receiveData.equals("bye")){
break;
}
}
//关闭资源
socket.close();
}
UDP多线程 实现在线聊天
//发送消息的线程
public class TalkSend implements Runnable {
DatagramSocket socket = null;
BufferedReader bufferedReader = null;
private int ToPort;
private String ToIP;
private int formPort;
public TalkSend(int toPort, String toIP, int formPort) {
this.ToPort = toPort;
this.ToIP = toIP;
this.formPort = formPort;
try {
socket = new DatagramSocket(this.formPort);
bufferedReader = new BufferedReader(
new InputStreamReader(System.in)
);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
//一直接受控制台数据
while (true){
try {
String data = bufferedReader.readLine();
byte[] datas = data.getBytes();
//装换成字节 发送
DatagramPacket datagramPacket =
new DatagramPacket(datas,0,datas.length,
new InetSocketAddress(ToIP, ToPort));
//发送包裹
socket.send(datagramPacket);
//推出
if (data.equals("bye")){
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
//关闭资源
socket.close();
}
}
//接收数据的线程
public class TalkReceive implements Runnable {
DatagramSocket socket = null;
private int port;
private String name;
public TalkReceive(int port, String name) {
this.port = port;
this.name = name;
try {
this.socket = new DatagramSocket(port);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
//死循环接受
while (true){
try {
//准备接受包裹
byte[] container = new byte[1024];
DatagramPacket packet = new DatagramPacket(container,0,container.length);
//阻塞 接受
socket.receive(packet);
//拿到包裹 转为String
byte[] data = packet.getData();
String receiveData = new String(data, 0, data.length);
//打印到控制台
System.out.println(name+":"+receiveData);
//收到 bye 结束死循环
if (receiveData.equals("bye")){
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
//关闭资源
socket.close();
}
}
//启动用户
public class User {
public static void main(String[] args) {
new Thread(new TalkSend(8080,"localhost",5555)).start();
new Thread(new TalkReceive(7777,"客服")).start();
}
}
//启动客服服务
public class Service {
public static void main(String[] args) {
new Thread(new TalkSend(7777,"localhost",6666)).start();
new Thread(new TalkReceive(8080,"用户")).start();
}
}
可以在控制台实现聊天的功能
通过java 用URL下载网络上的资源
public class URLDemo {
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("https://m10.music.126.net/20201020151245/b9c9389e9f737c165adba6cc8bb8f633/" +
"yyaac/obj/wonDkMOGw6XDiTHCmMOi/4065853164/f5e5/817e/3618/82383dcc7149628d4f5a00c62f44a353.m4a");
try {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
FileOutputStream fos = new FileOutputStream("天使的翅膀.m4a");
byte[] data = new byte[1024];
int len;
while ((len = inputStream.read(data))!=-1){
fos.write(data,0,len);
}
fos.close();
inputStream.close();
urlConnection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}