java udp方式传输数据 网络编程

概念

udp和tcp是两种常见的网络传输协议,udp的特点是速度快,但是稳定性差,可能会丢失数据。tcp的数据是稳定性高但是速度相对较慢。

udp协议传输数据实例

创建发送端

package com.test.udpTest;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UdpSend {
    
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

		//发送端
		try {
    
    
			
			
			//1.创建一个socket(码头)
			DatagramSocket datagramSocket=new DatagramSocket();
			
			//2.创建packet (集装箱)
			byte[] data="你好,通信技术".getBytes();
			int length=data.length;
			InetAddress ip=InetAddress.getByName("192.168.8.4");
			int port=8888; // 0-1023端口号一般是常用的知名的程序的端口号    65535以内
			
			//DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
			
			DatagramPacket datagramPacket=new DatagramPacket(data, length, ip, port);
			
			//3.发送
			datagramSocket.send(datagramPacket);
			
			//4.关闭码头
			datagramSocket.close();
			
			
			
			
			
		} catch (SocketException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnknownHostException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
	}

}

创建接收端

package com.test.udpTest;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpReceive {
    
    

	/**
	 * @param args
	 */
	public static void main(String[] args) {
    
    
		// TODO Auto-generated method stub

		//1.创建码头 接收端的码头需要添加端口号,发送端端口号要跟接收端的端口号一致
		try {
    
    
			DatagramSocket datagramSocket=new DatagramSocket(8888);
			
			//2.创建packet 用来接收传递过来的数据
			byte[] data=new byte[1024];
			int length=data.length;
			DatagramPacket datagramPacket=new DatagramPacket(data, length);
			
			//3.接收数据
			datagramSocket.receive(datagramPacket);
			
		    String ip=datagramPacket.getAddress().getHostAddress();
		    
		    String msg=new String(data);
		    
		    System.out.println("接收到来自"+ip+"的信息:"+msg);
		    
		    //4.关闭码头
		    datagramSocket.close();
			
		} catch (SocketException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

先运行接收端,在运行发送端,结果如图所示,接收端成功接收到了数据。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Rockandrollman/article/details/130495069