JAVA— 网络编程

  • U D P 多线程在线咨询
  • URL下载网上资源

通过URL下载网上资源下载

端口

TCP实现聊天

U D P 多线程在线咨询

端口

端口表示计算机上一个程序的进程

  • 不同的进程有不同的端口号 用来区分软件

  • 被规定 0~65535

  • 端口分类
    (1)公认端口(Well Known Ports)

(2)注册端口(Registered Ports)

(3)动态和/或私有端口(Dyanmic and /or Private Ports)

  • 查看所有的端口

  • netstat -ano #查看所有的端口
    netstat -ano findstr "5900" # 查看指定的端口
    
import java.net.InetAddress;
import java.net.UnknownHostException;public class TestIntAddress {public static void main(String[] args) {try {// 查询本机地址InetAddress inetAddress1  = InetAddress.getByName("127.0.0.1");System.out.println(inetAddress1);// 查询百度的 主机地址InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");System.out.println(inetAddress2);System.out.println(inetAddress2.getAddress());//  规范的名字System.out.println(inetAddress2.getCanonicalHostName());//查询  ipSystem.out.println(inetAddress2.getHostAddress());//查询域名System.out.println(inetAddress2.getHostName());} catch (UnknownHostException e) {e.printStackTrace();}}
}

TCP实现聊天


客户端:

  1. 连接服务器 Socket
  2. 发送消息
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;// 客户端
public class TcpClientDemo01 {public static void main(String[] args) {OutputStream os =null;Socket socket = null;try {// 知道 服务器地址 和端口InetAddress serverIp= InetAddress.getByName("127.0.0.1");int port = 9999;//  创建一个socket 连接socket = new Socket(serverIp,port);// 3 发送消息 IO 流os = socket.getOutputStream();os.write("你好啊,大哥哥,每一天都要开开心心哦 六一儿童节礼物还没有给你!".getBytes());} catch (Exception e) {e.printStackTrace();}finally {if(os != null){try {os.close();} catch (IOException e) {e.printStackTrace();}}if(socket != null){try {socket.close();} catch (IOException e) {e.printStackTrace();}}}}
}

服务器

  1. 建立服务的端口 ServerSocket
  2. 等待用户的链接 accept
  3. 接收用户的消息
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;// 服务器端
public class TcpServerDemo01 {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;InputStream is = null;ByteArrayOutputStream  baos = null;try {//   我得有一个地址serverSocket = new ServerSocket(9999);// 等待客户端连接过来socket = serverSocket.accept();// 读取客户端的消息is = socket.getInputStream();//管道流baos = new ByteArrayOutputStream();byte[] buffer =new byte[1024];int len;while((len = is.read(buffer)) != -1){baos.write(buffer,0,len);}System.out.println(baos.toString());} catch (IOException e) {e.printStackTrace();}}
}

UDP多线程在线咨询

// 第一个类    Send 发送
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;public class TalkSend implements Runnable{DatagramSocket socket = null;BufferedReader reader = null;private  int fromIP;private  String toIP;private  int toPort;public TalkSend(int fromIP, String toIP, int toPort) {this.fromIP = fromIP;this.toIP = toIP;this.toPort = toPort;try {socket = new DatagramSocket(fromIP);reader = new BufferedReader(new InputStreamReader(System.in));}catch (Exception e){e.printStackTrace();}}@Overridepublic void run() {while(true){try {String data = reader.readLine();// 读取一行消息byte[] datas = data.getBytes();DatagramPacket packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress(this.toIP,this.toPort));socket.send(packet);if(data.equals("bye")){break;}}catch (Exception e){e.printStackTrace();}}socket.close();}}

// 第二个类    Receive 接收
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class TalkReceive implements Runnable{DatagramSocket socket = null;private  int port;private String msgFrom;public TalkReceive(int port,String msgFrom) {this.port = port;this.msgFrom=msgFrom;try {socket = new DatagramSocket(port);}catch (SocketException e){e.printStackTrace();}}@Overridepublic void run() {while(true){try {// 准备接收 包裹byte[]  container = new byte[1024];DatagramPacket packet = new DatagramPacket(container,0,container.length);
//                socket.receive(packet);socket.receive(packet);// 阻塞时接收包裹// 断开连接  byebyte[] data = packet.getData();String receiveDate = new String (data, 0 ,data.length);System.out.println(msgFrom+":"+receiveDate);if(receiveDate.equals("bye")){break;}}catch (IOException e){e.printStackTrace();}}socket.close();}
}

测试类 学生 和 老师

  1. public class TalkStudent {public static void main(String[] args) {// 开启两个线程new Thread(new TalkSend(7777,"localhost",9999)).start();new Thread(new TalkReceive(8888,"老师")).start();}
    }
    
public class TalkTeacher {public static void main(String[] args) {new Thread(new TalkSend(5555,"localhost",8888)).start();new Thread(new TalkReceive(9999,"学生")).start();}
}
  1. 效果图


不知道 IDEA 怎么控制台怎分屏

URL网上资源下载

  • 本次是以从网上下载网易云音乐为例:
  • 下载的必要要素 必须知道 网上资源的URL 才可以进行下载

  • 首先去浏览器上搜索 然后进入浏览器控制台 找到音频的 URL 然后这个URL 就是我们进行下载的路径。
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class UrlDown {public static void main(String[] args) throws Exception {// 下载地址URL url = new URL("http://m10.music.126.net/20200602120835/02638bb77e5403d65fdb86d86f2863d6/yyaac/obj/wonDkMOGw6XDiTHCmMOi/2703362268/aa27/f3dd/abf2/062dde2b67cf0cf1ad5d242fae90f156.m4a");// 这个里面放的地址就是 之前在网上找到的音频的url // 连接到这个资源 HTTPHttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();InputStream inputStream = urlConnection.getInputStream();FileOutputStream fos = new FileOutputStream("f156.m4a");// 这个f156.m4a    “.m4a” 就是文件保存格式 名字随意是随意取的  byte[] buffer = new byte[1024];int len;while((len=inputStream.read(buffer)) != -1){fos.write(buffer,0,len);}//  关闭连接  fos.close();inputStream.close();urlConnection.disconnect();}
}

成功就会在idea中出现一个 .m4a 格式的文件 到本地文件夹中 通过音乐软件打开即可。能播放就是成功的。


初次写这样的博客 不足之处 请见谅。

JAVA--网络编程相关推荐

  1. java 密钥工厂 desede_20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...

  2. Java学习总结:52(Java网络编程)

    Java网络编程 开发第一个网络程序 java.net包提供了网络编程有关的开发工具类,在此包中有一下两个主要的核心操作类. ServerSocket类:是一个封装支持的TCP协议的操作类,主要工作在 ...

  3. Java - 网络编程(NetWork)

    Java - 网络编程(NetWork) 一.java.net包下的 InetAddress 类的使用: > 一个 InetAddress 代表着一个IP地址 > 主要用来查看本机的IP和 ...

  4. 【Java】 Java网络编程总结

     一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...

  5. Java网络编程笔记5

    在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子. 接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的S ...

  6. 实验五 Java网络编程及安全 实验报告 20135232王玥

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序与设计         班级:1352 姓名:王玥 学号:20135232 成绩:             指导 ...

  7. NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)

    1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...

  8. 04.Java网络编程(转载)

    1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...

  9. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...

    Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...

  10. 你所需要的java网络编程大总结

    好好学java java知识分享/学习教程免费分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 梦 上个月 ...

最新文章

  1. TinyML-TVM是如何驯服Tiny的(下)
  2. 现在编程语言的两大主流
  3. 正整数 java_JAVA语言:正整数A+B(Java)PAT团体程序设计题解
  4. 计算机统计知识,计算机知识在统计工作中的重要性
  5. Cacti实现网络监控的使用心得(1)
  6. 【李宏毅2020 ML/DL】P99-105 Life Long Learning
  7. 7-3 算术入门之加减乘除 (10 分)
  8. LeetCode路径问题
  9. 什么是静态代理和动态代理,两者的区别(笔记)
  10. 个人信用风险评估项目
  11. 什么无线耳机音质最好,无线耳机品牌排行榜
  12. Onvif协议学习:14、球机云台控制PTZ
  13. java aspose 导出word_aspose.words导出html 转word文档带图片,(无网络也可以看图)
  14. 精神病学专科哪家强?且看最新医院排行榜
  15. 聊聊你不知道的Java变量转型
  16. Tableau 符号地图、连续面积图、圆视图、仪表板
  17. (转)如何成为一名优秀的程序员?
  18. 解决java网络编程IPv6问题
  19. Prometheus 之 Alertmanager告警抑制与静默
  20. PointNetGPD 代码复现,环境配置,结果展示

热门文章

  1. 腾讯阿里字节扎堆做公益,互联网技术也要“内卷”?
  2. 巴特沃斯滤波器应用场合_巴特沃斯数字低通滤波器设计及应用
  3. cytoscape要求的JAVA版本_微生物研究必备:Cytoscape绘制网络图(一)
  4. java 递归编译_java计算x^n的递归方法?求高手给个算法最佳的 最好能编译通过 本人处于java初学者时期^^...
  5. Ubuntu下的固件分析Binwalk的安装
  6. Python字符串的定义与常用操作
  7. python列表各种切片姿势
  8. Python文件操作中进行字符串替换(保存到新文件/当前文件)
  9. Python的序列化与反序列化
  10. Python处理正则表达式超时的办法