DatagramSocket和Socket的区别
时间: 2023-12-07 13:20:06 浏览: 132
DatagramSocket和Socket都是用来建立网络连接的类,但是它们的工作方式不同。Socket是基于TCP协议的,它建立的是一条可靠的、面向连接的网络连接,数据的传输是有序的、无差错的。而DatagramSocket是基于UDP协议的,它是无连接的,数据的传输是不可靠的、无序的、可能会丢失或重复。此外,DatagramSocket可以同时与多个主机通信,而Socket只能与一个主机通信。
相关问题
private DatagramSocket socket; public Sender(DatagramSocket socket) { this.socket=socket; }的作用
这段代码定义了一个名为`Sender`的类,其中包含一个构造函数`Sender(DatagramSocket socket)`。构造函数接收一个`DatagramSocket`类型的参数,并将其赋值给类中的成员变量`socket`。
`DatagramSocket`是Java中用于实现数据报式Socket的类,因此这段代码的作用是:创建了一个`Sender`对象时,需要传入一个`DatagramSocket`类型的参数,以便在类的其他方法中使用该socket进行数据报的发送操作。
DatagramSocket socket = new DatagramSocket(); int hostPort =socket.getLocalPort();//获取当前收发地址的端口 String hostIP = InetAddress.getLocalHost().getHostAddress();
这段代码创建了一个 DatagramSocket 对象,并通过该对象获取了当前收发地址的端口号和本机的 IP 地址。
具体来说,第一行代码创建了一个 DatagramSocket 对象,该对象可以用于发送和接收 UDP 数据报。在创建 DatagramSocket 对象时,如果不指定端口号和 IP 地址,系统会自动分配一个空闲的端口号和本机的 IP 地址。
第二行代码调用 `getLocalPort()` 方法获取当前 DatagramSocket 对象绑定的端口号。
第三行代码使用 `InetAddress.getLocalHost().getHostAddress()` 方法获取本机的 IP 地址。`InetAddress.getLocalHost()` 方法返回一个表示本机的 InetAddress 对象,`getHostAddress()` 方法返回该 InetAddress 对象对应的 IP 地址。
阅读全文