网络编程(UDP,TCP)
程序员文章站
2022-06-30 10:22:14
...
网络编程基本概念:
链路层:定义屋里传输通道(接口,驱动程序)
网络层:核心:将数据分组(IP,ICMP,IGMP)
传输层:通信,可以采用TCP/UDP(TCP、UDP)
应用层:负责应用程序的协议例:HTTP,FTP协议
(HTTP、FTP、DNS)
IP地址最大为255首位不能为0(IPV4)
端口号:逻辑端口由操作系统负责,对美分程序进行分配
范围:0-65535,1024之前号码不能用,被操作系统占用了
网络端口号默认为:80 网页
InetAddress 表示互联网协议(IP)地址
Java.net.IneAddress 不能被示例化
静态方法:
Static InetAddress getLocalHost() 本地主机
返回本地主机,返回值 InetAddress 对象
Static InetAddress getByName(String hostName)
传输别人的主机名,获取IP地址对象
非静态方法:
getHostAddress() 返回IP地址
getHostName() 返回主机名
UDP协议特点:无连接通信,资源小,通信效率高
缺点:容易丢失数据
注意:数据超过64kb就不能传输了
DatagramPacket类 封装包,数据包
DatagramSocket类 传输数据包
TCP协议:
面向连接可以保证数据的安全性,因此下载数据的时候必须使用TCP协议
UDP不区别客户端与服务器端
TCP严格区别客户端与服务器端
UDP(接收端)
实现封装数据包:java.net.DatagramRacket 将数据接收
实现输出传递 :java.net.DatagramSocket接收数据包
实现步骤:
1.创建DatagramSocket,绑定端口号
要和发送端端口一致
2.创建字节数组,接收法来的数据
3.创建数据包对象DatagramRacket
4.调用DatagramSocket对象放
receive(DatagramPacket dp) 接收数据,数据放在数据包中
5.拆包
发送的IP地址
数据包对象DatagramPacket方法
getAddress()获取发送端的IP地址对象
返回值是InetAddress对象
接收到的字节个数
数据包对象DatagramPacket方法
getLength() 接收到的字节个数
发送端的端口号
数据包对象DatagramPacket方法
getPort()获取发送端的端口
6.关闭资源
代码示例:
UDP(发送端)
实现封装数据的类java.net.DatagramPacket 将你的数据包装
实现数据传输的类java.net.DatagramSocket 将数据包发出去
实现步骤:
1.创建DatagramPacket对象,封装数据,接收的地址和端口
2.创建DatagramSocket对象
3.调用DatagramSocket类方法send,发送数据包
4.关闭资源
DatagramPacket构造方法:
DatagramPacket(byte[] buf,int length,InetAddress address,int port)
DatagramSocket构造方法:
DatagramSocket()空参数
方法:send(DatagramPacket d)
代码示例:
TCP协议(客户端)
实现TCP客户端,连接服务器和服务器实现数据交换
实现TCP客户端程序的类java.net.Socket
构造方法:
Socket(String host,int port),传递服务器IP,端口
注意:只要运行客户端就会跟服务器进行连接,连接失败,抛出异常
OutputStream getOutputStream()返回套接字的字节输出流
作用:将数据输出至服务器
InputStream getInputStream()返回套接字的字节输入流
作用:从服务器端获取数据
客户端服务器数据交换,必须使用套接字对象Socket中获取IO流,自己new的流,不行
代码示例:
TCP协议(服务器端)
表示服务器程序的类 java.net.ServerSocket
构造方法:
ServerSocket(int port)传递端口号
运行就启动服务器
必须获得客户端的套接字对象Socket
Socket accept()获取客户端套接字对象
代码示例:
上一篇: 微信小程序实现无限滚动列表
下一篇: C#中Socket通信用法实例详解