欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网络编程(UDP,TCP)

程序员文章站 2022-06-30 10:22:14
...

网络编程基本概念:

链路层:定义屋里传输通道(接口,驱动程序)

网络层:核心:将数据分组(IP,ICMP,IGMP)

传输层:通信,可以采用TCP/UDP(TCP、UDP)

应用层:负责应用程序的协议例:HTTP,FTP协议

(HTTP、FTP、DNS)

网络编程(UDP,TCP)

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,TCP)

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)

代码示例:

网络编程(UDP,TCP)

TCP协议(客户端)

	实现TCP客户端,连接服务器和服务器实现数据交换
    实现TCP客户端程序的类java.net.Socket

构造方法:

      Socket(String host,int port),传递服务器IP,端口
      注意:只要运行客户端就会跟服务器进行连接,连接失败,抛出异常
  OutputStream getOutputStream()返回套接字的字节输出流
          作用:将数据输出至服务器
  InputStream getInputStream()返回套接字的字节输入流
          作用:从服务器端获取数据
  客户端服务器数据交换,必须使用套接字对象Socket中获取IO流,自己new的流,不行

代码示例:

网络编程(UDP,TCP)

TCP协议(服务器端)

  表示服务器程序的类 java.net.ServerSocket
     构造方法:
          ServerSocket(int port)传递端口号
              运行就启动服务器
     必须获得客户端的套接字对象Socket
     Socket accept()获取客户端套接字对象

网络编程(UDP,TCP)

代码示例:

网络编程(UDP,TCP)