欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Connection

最编程 2024-07-02 20:54:55
...
将数据包写入目标VM。

尝试将JDWP数据包写入或发送到目标VM。 写操作仅在将整个数据包写入目标VM后返回。 写入整个数据包并不意味着整个数据包已经传输到目标VM,而是所有字节都已写入传输服务。 例如,基于TCP / IP连接的传输服务可以在网络上传输之前缓冲一些或全部分组。

提供给此方法的字节数组应按照JDWP specification进行布局 也就是说,数据包中的所有字段都是大端序。 第一个字节,即元素pkt[0] ,是length字段的第一个字节。 pkt[1]length字段的第二个字节,依此类推。

除了检查数据包长度之外,写入数据包不会对数据包进行任何完整性检查。 检查数据包长度需要检查length字段的值(由数据包的前四个字节指示)是否为11或更大。 因此,提供给此方法的字节数组的长度(即pkt.length )必须为11或更大,并且必须等于或大于length字段的值。 如果字节数组的长度大于length字段的值,则忽略元素pkt[length]以后的所有字节。 换句话说,字节数组中数据包后面的任何附加字节都将被忽略,并且不会传输到目标VM。

写操作可以阻止或立即完成。 操作块的确切情况取决于传输服务。 在与目标VM的TCP / IP连接的情况下,如果存在网络拥塞或者没有足够的空间来缓冲底层网络系统中的分组,则writePacket方法可以阻止。

可以随时调用此方法。 如果另一个线程已经在此Connection上启动了写操作,则此方法的后续调用将阻塞,直到第一个操作完成。