udp:面向无连接
1.不需要连接,要封包并指定要发的地址,端口
2.每个数据包不超64kb
3.无连接不可靠
4.无连接速度快
飞秋、视频广播软件、
tcp:面向连接
1.必须建立连接,建立传输通道
2.在连接中进行大数据量传输,不用封包,就在通道里面传
3.通过三次握手完成建立连接,是可靠协议(第一次:老师问张三在吗 第二次:张三说在的 第三次:老师回应哦在的)
4.连接,效率会低
下载
那么这些复杂的协议呢,java就为我们封装好了对象 socket 所以网络编程即socket编程
主机上的软件/应用程序(端口) 即可理解为socket(插座/码头)
网络通信Socket
Socket是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket通信,数据在两个Socket间是通过IO传输。
DatagramSocket
此类表示用来发送和接收数据报包的套接字.在 DatagramSocket 上总是启用 UDP 广播发送
DatagramPacket
此类表示数据报包。数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器(路由:找一目的地)
需求一(udp发送端):通过Udp传输方式,将一段数据发送出去
思路:
(1),建立udpsocket服务
(2),提供数据,并将数据封装到数据包中
(3),通过socket服务的发送功能,将数据发送出去
(4),关闭资源
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception {
//1,创建udp服务,通过Datagramsocket()构造函数;
DatagramSocket ds = new DatagramSocket(9999);
//指定发送端口号9999,那么接收端接收的就是9999端口发送的数据
//2,提供数据并将数据封装到数据包,将数据发送到10000端口
byte[] buf = "shu ju fa song".getBytes();
DatagramPacket dp = new
DatagramPacket(buf,buf.length,InetAddress.getByName("27.19.74.69"),10000);
//3,通过socket服务,将已有的数据包发送出去,通过send方法。send(DatagramPacket p)
ds.send(dp);
//4,关闭资源
ds.close();
}
}