网络通信协议
1.IP地址和端口号
通过IP地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号。在计算机中,不同的应用程序是通过端口号区分的。端口号是用两个字节(16位的二进制数)表示的,它的取值范围是0~65535,其中,0~1023之间的端口号用于一些知名的网络服务和应用,用户的普通应用程序需要使用1024以上的端口号,从而避免端口号被另外一个应用或服务所占用。
2.InetAddress类
常用方法:
getByName()获取ip地址,静态方法
getLocalHosr()获取本地主机,静态方法
getHostName()获取主机名
gethostAddress()返回IP地址字符串
3.UDP协议
用户数据报协议,
UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接
4.TCP协议
传输控制协议
TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输
5.UDP通信
DatagramPacket类
构造方法:new DatagramPacket,明确要传输的数据,大小,IP地址,端口号
常用方法:
getAddress获取IP地址
getPort获取端口号
getData返回数据
genLength返回文件大小
DatagramSocket类
构造方法:创建发送端对象,创建接收端对象明确端口
常用方法:
send()方法,发送数据
receive()方法,接收数据
使用UDP通信
//udp协议的发送端 public class UDPSend { public static void main(String[] args) throws IOException { //本机ip 127.0.0.1 //创建数据包对象,封装要发送的数据,明确接收端的ip和端口号 byte[] bytes="你好吗".getBytes(); InetAddress inet=InetAddress.getByName("127.0.0.1"); DatagramPacket dp=new DatagramPacket(bytes, bytes.length,inet,8888); //创建快递公司对象 DatagramSocket ds=new DatagramSocket(); //发送出去 ds.send(dp); //释放资源 ds.close(); }
//接收段 public class UDPRecieve { public static void main(String[] args) throws IOException { //创建快递公司对象,明确端口号 DatagramSocket ds=new DatagramSocket(8888); //创建空的字节数组 byte[] bytes=new byte[1024]; //创建空的数据包对象,接收数据 DatagramPacket dp=new DatagramPacket(bytes, bytes.length); //接收数据包 ds.receive(dp); //拆包 //获取发送端ip地址 String ip=dp.getAddress().getHostAddress(); //获取发送端端口号 int port=dp.getPort(); //获取数据长度 int len=dp.getLength(); System.out.println("ip地址为:"+ip+",端口号为:"+port+",发送内容为:"+new String(bytes,0,len)); //释放资源 ds.close(); }
UDP通信步骤:
1.获取要发送的ip
2.明确要发送的数据
3.包装数据,数据大小,ip,端口号
4.创建DatagramSocket类,快递公司
5.发送数据
6.接收端,创建快递公司,明确端口号
7.创建空包,空数组
8.接收数据
9.输出数据,new String()
10.释放资源
浙公网安备 33010602011771号