26-网络编程-07-网络编程(UDP协议-发送端)

/*
 * 【Socket】
 * (1)Socket就是为网络服务提供的一种机制
 * (2)通信的两端都有Socket
 * (3)网络通信起始就是Socket间的通信
 * (4)数据在两个Socket间通过IO传输
 * 
 * 想要通讯,那么必须有一个Socket,数据在Socket两端进行传输
 * Socket就是通讯的两个端点,类似于轮船在两个港口之间来回运输货物,那么两个港口=Socket,货物=传输的数据
 * 
 * 【UDP传输】
 * (1)DatagramSocket与DatagramPacket
 * (2)建立发送端,接收端
 * (3)建立数据包
 * (4)调用Socket的发送接收方法
 * (5)关闭Socket
 * 发送端与接收端是两个独立运行的程序。
 */

/**
 * 【DatagramSocket类】
 * 打开API,点进java.net类,找到DatagramSocket类,其内说明:
 * 		此类表示用来发送和接收数据报包的套接字。
 * 示例:DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); 
 * 这等价于:DatagramSocket s = new DatagramSocket(8888); 
 * 两个例子都能创建能够在 UDP 8888 端口上接收广播的 DatagramSocket。
 * 
 * 【DatagramPacket类】
 * 打开API,点进java.net类,找到DatagramPacket类,其内说明:
 * 		此类表示数据报包。 数据报包用来实现【无连接】包投递服务。
 * 每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,
 * 也可能按不同的顺序到达。不对包投递做出保证(UDP不是可靠协议,类似QQ给离线好友发消息,直接发送,对方是否收到不知道)。
 * 
 * 其内构造方法摘要:
 * (1)DatagramPacket(byte[] buf, int length) 
 * 
 * (2)DatagramPacket(byte[] buf, int length, InetAddress address, int port)
 *  
 * (3)DatagramPacket(byte[] buf, int offset, int length)
 *  
 * (4)DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
 * 
 * (5)DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
 *  
 * (6)DatagramPacket(byte[] buf, int length, SocketAddress address)
 * 
 *  构造函数说明详见API,注意,包分为用来发送的和用来接收的,(1)~(6)中凡是带Address即IP地址的,都是用来
 *  发送的,因为既然发送,必须明确目的地,那么这个InetAddress就是目的地。所以(1)和(3)是在接收包时候的构造函数,
 *  (2)、(4)、(5)、(6)是在发包时候的构造函数。
 */

package demo;

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

public class UDPDemo {

	public static void main(String[] args) throws IOException {

		/*
		 * 创建UDP传输的发送端
		 * 
		 * 思路:
		 * 1.建立UDP的Socket服务
		 * 2.将要发送的数据封装到数据包中
		 * 3.通过UDP的Socket服务将数据包发送出去
		 * 4.关闭Socket服务。
		 */
		
		System.out.println("发送端启动......");
		
		//1.UDPSocket服务,使用DatagramSocket对象。
		DatagramSocket ds = new DatagramSocket();
		
		//2.将要发送的数据封装到数据包中。
		String str = "udp传输演示";
		
//这里使用DatagramPacket类中的构造函数将数据封装到该对象包中,使用(2)构造函数,那么先创建该构造函数的参数,如buf等。

		byte[] buf = str.getBytes();//利用String类的getBytes()方法将str转成字节数组
		
		DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("10.196.19.56"),10000);
		//10.196.19.56是本地主机地址,10000是端口号,发给本地主机10000端口的应用程序
		
		//3.通过udp的socket服务将数据包发送出去,使用send方法
		ds.send(dp);
		
		//4.关闭资源
		ds.close();
		
		
		
		
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值