Java se:网络编程
概述
- 用Java语言实现计算机间数据的信息传递和资源共享
- 参考模型:
OSI参考模型
TCP/IP参考模型
网络编程三要素
IP地址:
- 计算机的在网络中的标识
- 点分十进制标识法:4个字节,每个字节采用一个十进制数据表示
- IP地址的组成:网络号码+主机地址
- IP地址的分类
- dos命令:
- ipconfig:查看本机ip地址
- ping+本机IP地址:测试本机与指定IP地址的通信 ( 127.0.0.1 回环地址,可用于测试本机的网络是否有问题.)
- InetAddress类:
- 无构造方法,成员方法全部是静态(例如Math,Arrays,Collections)
- 成员方法:
获取任意主机:getByName
主机名:getHostName
主机Ip地址:getHostAddress
端口:
是应用程序的标识。
范围:0-65535。其中0~1024系统使用或保留端口。
协议:
- UDP:数据打包,有限制,不连接,效率高,不可靠
TCP:建立数据通道,无限制,效率低,可靠(三次握手)
Socket套接字:
- 网络上具有唯一标识的 IP地址+端口号 组合在一起才能构成唯一能识别的标识符套接字。
- 原理:
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
UDP协议发送和接收数据
- 发送:
创建UDP发送端的Socket对象
创建数据并把数据打包
发送数据
释放资源
// 创建发送端Socket对象
// DatagramSocket()
DatagramSocket ds = new DatagramSocket();
// 创建数据,并把数据打包
// DatagramPacket(byte[] buf, int length, InetAddress address, int port)
// 创建数据
byte[] bys = "hello,udp".getBytes();
// 长度
int length = bys.length;
// IP地址对象
InetAddress address = InetAddress.getByName("192.168.12.92");
// 端口
int port = 10086;
DatagramPacket dp = new DatagramPacket(bys, length, address, port);
// 调用Socket对象的发送方法发送数据包
// public void send(DatagramPacket p)
ds.send(dp);
// 释放资源
ds.close();
- 接收:
创建UDP接收端的Socket对象
创建数据包用于接收数据
接收数据
解析数据包
释放资源
// 创建接收端Socket对象
// DatagramSocket(int port)
DatagramSocket ds = new DatagramSocket(10086);
// 创建一个数据包(接收容器)
// DatagramPacket(byte[] buf, int length)
byte[] bys = new byte[1024];
int length = bys.length;
DatagramPacket dp = new DatagramPacket(bys, length);
// 调用Socket对象的接收方法接收数据
// public void receive(DatagramPacket p)
ds.receive(dp); // 阻塞式
// 解析数据包,并显示在控制台
// 获取对方的ip
// public InetAddress getAddress()
InetAddress address = dp.getAddress();
String ip = address.getHostAddress();
// public byte[] getData():获取数据缓冲区
// public int getLength():获取数据的实际长度
byte[] bys2 = dp.getData();
int len = dp.getLength();
String s = new String(bys2, 0, len);
System.out.println(ip + "传递的数据是:" + s);
// 释放资源
ds.close();
TCP协议发送和接收数据
- 发送:
创建TCP客户端的Socket对象
获取输出流,写数据
释放资源
public static void main(String[] args) throws IOException {// 创建发送端的Socket对象// Socket(InetAddress address, int port)// Socket(String host, int port)// Socket s = new Socket(InetAddress.getByName("192.168.12.92"), 8888);Socket s = new Socket("192.168.12.92", 8888);// 获取输出流,写数据// public OutputStream getOutputStream()OutputStream os = s.getOutputStream();os.write("hello,tcp".getBytes());// 释放资源s.close();}
- 接收:
创建TCP服务器端的Socket对象
监听客户端连接
获取输入流,读取数据
释放资源
public static void main(String[] args) throws IOException {// 创建接收端的Socket对象// ServerSocket(int port)ServerSocket ss = new ServerSocket(8888);// 监听客户端连接。返回一个对应的Socket对象// public Socket accept()Socket s = ss.accept(); // 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。// 获取输入流,读取数据显示在控制台InputStream is = s.getInputStream();byte[] bys = new byte[1024];int len = is.read(bys); // 阻塞式方法String str = new String(bys, 0, len);String ip = s.getInetAddress().getHostAddress();System.out.println(ip + "---" + str);// 释放资源s.close();// ss.close(); //这个不应该关闭}
Java se:网络编程相关推荐
- Java SE 网络编程
Java SE 网络编程 目录 Java SE 网络编程 1.计算机网络概念 2.网络通讯协议 2.2.通讯接口 3.网络分层 3.2.OSI七层协议|TCP/IP五层协议 3.3 . 封装 3.4. ...
- java集合到线程的考试_成都汇智动力-Java SE考试编程题总结
原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...
- JAVA SE 语言编程-杨千锋-专题视频课程
JAVA SE 语言编程-3572人已学习 课程介绍 第一周: 内容包括,Java环境搭建,变量,数据类型,二进制,if/else,switch,for,while,do while等 ...
- Netty:Java 领域网络编程的王者
一.简介 1. 课程背景 分布式系统的根基在于网络编程,而 Netty 是 Java 领域网络编程的王者. 2. 课程内容 第一部分 NIO 编程,三大组件 第二部分 Netty 入门学习,Event ...
- 你对Java网络编程了解的如何?Java BIO 网络编程 | Netty 前期知识
一步一步走来,之前去学习了JUC并发编程知识,现在终于到Java IO网络编程啦,难啊. 一.BIO介绍 引入: 随着技术的发展,两个或以上的程序必然需要进行交互,于是提供了一种端到端的通信,相当于对 ...
- 四十六、深入Java的网络编程(下篇)
@Author:Runsen @Date:2020/6/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- 四十五、深入Java的网络编程(上篇)
@Author:Runsen @Date:2020/6/8 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- JAVA的网络编程【转】
转自 http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能 ...
- java的网络编程有用吗_十大有用但又偏执的Java编程技术
java的网络编程有用吗 经过一段时间的编码(以我为例,大约20年左右,当您玩得开心时光飞逝),人们开始接受这些习惯. 因为,你知道... 任何可能出错的事情都会发生. 这就是为什么人们会采用&quo ...
- java中no1_【Java】-- 网络编程のNo.1
在现有的网络中,网络通讯的方式主要有两种: TCP(传输控制协议)方式 UDP(用户数据报协议)方式 在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后 ...
最新文章
- 摄像头YUV图像常见数据格式介绍
- modelsim-win64-10.1c的安装和基本使用
- 您的手机上未安装应用程序 android 点击快捷方式提示未安装程序的解决
- 如何反序列化XML文档
- 如何在Linux使用Eclipse + CDT开发C/C++程序? (OS) (Linux) (C/C++) (gcc) (g++)
- python在线读-Python电子书免费分享
- eclipse openmp mpi并行编程例子
- Android 音频播放——AudioTrack直接播PCM、MediaPlayer播媒体文件可以是audio
- Qt学习(一):两个独立窗口的信号通信
- AXI_05 AXI_FULL_IP的设计与验证
- Tensorflow+gpu安装
- 计算机网络四个阶段的发展特点,计算机网络的发展分哪四个阶段,特点?
- mysql抽屉图标_React Native自定义组件实现抽屉菜单控件效果
- NOI2015 荷马史诗
- swift python 性能_Swift 性能探索和优化分析
- wps 项目进度_wps excle做甘特图|如何利用excel自动生成施工进度计划横道图
- 干货|java缓存技术详解
- 旧计算机 云桌面,切换桌面(云桌面切换到自己电脑)
- Cesium中文教程-空间数据可视化Visualizing Spatial Data(二)
- 【make】make常见问题