JAVA--网络编程
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实现聊天
客户端:
- 连接服务器 Socket
- 发送消息
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();}}}}
}
服务器
- 建立服务的端口 ServerSocket
- 等待用户的链接 accept
- 接收用户的消息
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();}
}
测试类 学生 和 老师
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();}
}
- 效果图
不知道 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--网络编程相关推荐
- java 密钥工厂 desede_20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...
- Java学习总结:52(Java网络编程)
Java网络编程 开发第一个网络程序 java.net包提供了网络编程有关的开发工具类,在此包中有一下两个主要的核心操作类. ServerSocket类:是一个封装支持的TCP协议的操作类,主要工作在 ...
- Java - 网络编程(NetWork)
Java - 网络编程(NetWork) 一.java.net包下的 InetAddress 类的使用: > 一个 InetAddress 代表着一个IP地址 > 主要用来查看本机的IP和 ...
- 【Java】 Java网络编程总结
一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...
- Java网络编程笔记5
在Java网络编程笔记4中我们看到了客户端与服务器通信的过程,只是在前面的程序只是单个客户端与服务器通信 的例子. 接下来我们看如何实现多个客户端与服务器通信,对于服务器来说,它要为每个客户端请求的S ...
- 实验五 Java网络编程及安全 实验报告 20135232王玥
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序与设计 班级:1352 姓名:王玥 学号:20135232 成绩: 指导 ...
- NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...
- 04.Java网络编程(转载)
1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...
- python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...
- 你所需要的java网络编程大总结
好好学java java知识分享/学习教程免费分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 梦 上个月 ...
最新文章
- TinyML-TVM是如何驯服Tiny的(下)
- 现在编程语言的两大主流
- 正整数 java_JAVA语言:正整数A+B(Java)PAT团体程序设计题解
- 计算机统计知识,计算机知识在统计工作中的重要性
- Cacti实现网络监控的使用心得(1)
- 【李宏毅2020 ML/DL】P99-105 Life Long Learning
- 7-3 算术入门之加减乘除 (10 分)
- LeetCode路径问题
- 什么是静态代理和动态代理,两者的区别(笔记)
- 个人信用风险评估项目
- 什么无线耳机音质最好,无线耳机品牌排行榜
- Onvif协议学习:14、球机云台控制PTZ
- java aspose 导出word_aspose.words导出html 转word文档带图片,(无网络也可以看图)
- 精神病学专科哪家强?且看最新医院排行榜
- 聊聊你不知道的Java变量转型
- Tableau 符号地图、连续面积图、圆视图、仪表板
- (转)如何成为一名优秀的程序员?
- 解决java网络编程IPv6问题
- Prometheus 之 Alertmanager告警抑制与静默
- PointNetGPD 代码复现,环境配置,结果展示
热门文章
- 腾讯阿里字节扎堆做公益,互联网技术也要“内卷”?
- 巴特沃斯滤波器应用场合_巴特沃斯数字低通滤波器设计及应用
- cytoscape要求的JAVA版本_微生物研究必备:Cytoscape绘制网络图(一)
- java 递归编译_java计算x^n的递归方法?求高手给个算法最佳的 最好能编译通过 本人处于java初学者时期^^...
- Ubuntu下的固件分析Binwalk的安装
- Python字符串的定义与常用操作
- python列表各种切片姿势
- Python文件操作中进行字符串替换(保存到新文件/当前文件)
- Python的序列化与反序列化
- Python处理正则表达式超时的办法