java.net网络编程

it2023-06-11  76

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(); } } }
最新回复(0)