26-网络编程-07-网络编程(UDP协议-发送端)
2015-08-11 17:16
826 查看
/* * 【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(); } }
相关文章推荐
- 26-网络编程-06-网络编程(域名解析)
- 26-网络编程-05-网络编程(IP对象_InetAddress)
- Android 网络学习之使用多线程下载,支持断点续传
- 26-网络编程-03-网络编程(网络要素-端口)
- 26-网络编程-04-网络编程(网络要素-传输协议)
- 26-网络编程-02-网络编程(网络要素-IP地址)
- 26-网络编程-01-网络编程(网络模型概述)
- HTTPS 双向认证
- RTP-RTCP协议分析
- android--访问网络权限
- 谈谈如何训练一个性能不错的深度神经网络
- android访问网络--okhttp
- 小点滴——网站视频下载——摘自网络
- 【chrome错误】Cross origin requests are only supported for protocol schemes: http, data,chrome-extension
- UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器
- VirtualBox 网络连接方式设置以及硬件虚拟化
- Netty入门之-http文件服务器
- wget -r -nc -np "http://www.zhihu.com/"
- wget -r -nc -np "http://www.zhihu.com/"
- android网络状态监听