在网络通信协议下,不同计算机上运行的程序,进行的数据传输。


网络编程三要素:

IP:

IPv4:全称: Internet Protocol version 4,互联网通信协议第四版。采用32位地址长度,分成4组;平时表示是是点分十进制 4位都是0~255
IPv4的地址分类形式:公网地址(万维网使用)和私有地址(局域网使用)。
192.168.开头的就是私有址址,范围即为192.168.0.0--192.168.255.255,专门为组织机构内部使用,以此节省IP
特殊IP地址:127.0.0.1,也可以是localhost:是回送地址也称本地回环地址,也称本机IP,永远只会寻找当前所在本机。发送数据给自己的时候发送这个地址是不用经过路由器再找。

IPv6:采用128位地址长度,分成8组。冒分十六进制(0位压缩表示法:中间连续的0可以压缩了)
InetAddress:
表示ip的对象
子类Inet4Address对应ipv4

//获取对象
InetAddress address=InetAddress.getByName("地址192.168.1.100");端口号:

协议:

UDP协议:
用户数据报协议(User Datagram Protocol)UDP是面向无连接通信协议。
速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据
面向无链接:发送数据的时候不会检查网络是否畅通,但是会快一点
TCP协议:
传输控制协议TCP(Transmission Control Protocol)TCP协议是面向连接的通信协议。
速度慢,没有大小限制,数据安全。
UDP通信程序:
发送数据:
创建发送端的DatagramSocket对象;数据打包(DatagramPacket);发送数据;释放资源
DatagramSocket ds=new DatagramSocket();//参数是绑定端口,用这个端口往外发送数据,
空参就是可用端口中随机一个
//打包数据
String name="";
byte[] bytes=name.getBytes();
InetAddress address=InetAddress.getByName("192.168.1.100");
int port=10086;
DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);
//port发送的端口 address发送地址
ds.sent(dp);
ds.close();接受数据:
创建接收端的DatagramSocket对象;接收打包好的数据;解析数据包;释放资源
DatagramSocket ds=new DatagramSocket(10086);
//接收的时候一定要绑定端口,端口和发到的端口一样
byte[] bytes=new byte[1024];
DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
//堵塞的,会等发送端发送数据再执行下面的
ds.receive(dp);
//解析数据包
byte[] data=dp.getDate();
dp.getLength();dp.getAddress();//获得地址
dp.getPort();//获得对方的端口
ds.close();UDP的三种通信方式:
单播:一对一
组播:一对一组
组播地址:224.0.0.0~239.255.255.255
其中224.0.0.0~224.0.0.255为预留的组播地址
//发送
MulticastSocket ms=new MulticastSocket();
String name="";
byte[] bytes=name.getBytes();
InetAddress address=InetAddress.getByName("224.0.0.1");//此时地址应该是组播地址
int port=10086;
DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);
//port发送的端口 address发送地址
ms.sent(dp);
ms.close();
//接受
MulticastSocket ms=new MulticastSocket();
InetAddress address=InetAddress.getByName("224.0.0.1");
ms.joinGroup(address);//将当前本机加入到224.0.0.1这一组中
//需要多个就用多个接收端都来加入到这一组中
//接收的时候一定要绑定端口,端口和发到的端口一样
byte[] bytes=new byte[1024];
DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
//堵塞的,会等发送端发送数据再执行下面的
ms.receive(dp);
//解析数据包
byte[] data=dp.getDate();
dp.getLength();dp.getAddress();//获得地址
dp.getPort();//获得对方的端口
ms.close();广播:对局域网中所有电脑
广播地址:255.255.255.255
代码只要修改地址为广播地址就可以了
TCP通信程序:
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象通信之前要保证连接已经建立。通过Socket产生IO流来进行网络通信

//客户端发送数据 创建对象的时候链接不上会报错的
Socket socket=new Socket("127.0.0.1",10000);
OutputStream os=socket.getOutpuStream();
os.write();
os.close();socket.close();
//服务端 接受端
ServiceSocket ss=new ServiceSocket(10000);//端口要一致
//监听客户端的连接
Socket socket=ss.accept();
//从连接通道读取数据
InputStream is=socket.getInputStream();
//读中文要把is转换成字符流
//InputStreamReader isr=new InputStreamReader(is);
int b;
while(b=is.read()!=-1){}
socket.close();
ss.close()细节:要先运行服务端,要不然客户端找不到;服务端会停止在监听,直到客户端连接;
客户端底层会通过三次握手协议保证连接的建立
断开的时候会通过四次挥手协议保证通道内数据处理完才断开通道
三次握手:

四次挥手:

其他:
手动结束标记
socket.shutdownOutput();//在客户端中写完后服务端会结束读取
本文介绍了网络通信中的IP协议,包括IPv4和IPv6,以及端口号的作用。详细阐述了UDP和TCP协议的区别,展示了UDP通信和TCP通信的程序示例,包括单播、组播和广播的实现。同时提到了网络连接的三次握手和四次挥手过程。
2275

被折叠的 条评论
为什么被折叠?



