Java的DatagramChannel.write()的含义

时间:2015-05-29 17:01:50

标签: java sockets network-programming udp

我最近使用DatagramChannel.write()找到了代码。代码在连接之前只询问主机IP和端口,然后允许发送(通过DatagramChannel.write())。

对网络编程不熟悉,它似乎不会请求目标IP /端口。为什么不呢?

Oracle的文档说明

  

只有在连接此频道的套接字时,才能调用此方法,   在这种情况下,它将数据报直接发送到套接字的对等端。

套接字""是什么意思?

2 个答案:

答案 0 :(得分:2)

  

对网络编程不熟悉,它似乎不会请求目标IP /端口。为什么不呢?

因为它已在之前的connect().

中指定
  

Oracle的文档陈述

     
    

只有在连接此通道的套接字时才会调用此方法,在这种情况下,它会直接将数据报发送到套接字的对等方。     “套接字的同行”是什么意思?

  

您连接频道的目标IP:端口。

答案 1 :(得分:1)

DatagramChannel是java.nio包的一部分。将ByteBuffer作为参数发送到连接的通道。 在尝试发送之前,您应该使用InetSocketAddress连接,它将主机ip和端口作为参数。 connect(SocketAddress remote) - >将通道连接到底层套接字。您可以从Datagramchannel获取套接字,因为通道是非阻塞的,用于读/写目的。 socket peer只是远程机器。