首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >数据包的getOffset()在接收端返回0

数据包的getOffset()在接收端返回0
EN

Stack Overflow用户
提问于 2013-04-29 11:22:48
回答 1查看 1.6K关注 0票数 1

我有一个很长的文本文件,我试图在本地主机上跨UDP传输它,所以很自然,我必须分解字节缓冲区才能以数据包的形式发送该文件。

我遇到的问题是:

在服务器端,我将带有偏移量的数据包发送到字节缓冲区集中,例如500:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        byte[] buf = text.getBytes();
        InetAddress address = InetAddress.getByName("localhost");

        DatagramPacket packet = new DatagramPacket(buf, 500, BYTES_PER_PACKET, address, udp_port_num);

        System.out.println("Offset at server:  " + packet.getOffset());
        udpSocket.send(packet);

print语句返回预期的答案500。

但在客户端:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                byte[] buf = new byte[BYTES_PER_PACKET];                    
                DatagramPacket packet = new DatagramPacket(buf, BYTES_PER_PACKET);

                udpSocket.receive(packet);

                String received = new String(packet.getData());

                System.out.println(received);
                System.out.println("Offset:  " + packet.getOffset());

它从接收到的文件的偏移量中打印正确的文本,但是packet.getOffset()总是返回0。为什么它不从服务器返回相同的500,或者如何使它从服务器返回相同的500?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2013-04-29 17:28:42

这一切的意义是:

  1. 在发送方,您使用源数组的字节500.字节_PER_ DatagramPacket -500创建了一个。
  2. 是你送的包裹。它以UDP数据报的形式越过了线路。它是以UDP数据报的形式到达的。
  3. 在接收方,您构造了一个新的字节数组,并围绕它构造了一个新的DatagramPacket,指定了偏移量= 0,或者没有偏移参数。将UDP数据报放到DatagramPacket,中的字节数组中,从指定的偏移量开始:零。

请注意,发送方的DatagramPacket本身没有通过线路,也没有通过发送方的字节数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16286568

复制
相关文章
IP 数据包接收过程
在《网络中断下半部处理》一文中介绍过,当网卡接收到网络数据包后,会由网卡驱动通过调用 netif_rx 函数把数据包添加到待处理队列中,然后唤起网络中断下半部处理。
用户7686797
2021/04/08
1.2K0
Netty5实现接收服务端返回数据
1、开发spring boot微服务中,需要和第三方服务器做报文交换数据,用netty来实现客户端,并做一个同步接受数据。一下用的是netty5,其它版本的相似即可。 2、pom.xml引入 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>5.0.0.Alpha1</version> </dependency> 3、ClientInitializer编写 i
张泽旭
2018/12/10
3.2K0
springmvc接收数据返回数据
1,当前端传递的参数名和方法形参名不一致时,通过@RequestParam指定转换关系
微醺
2019/01/17
1.5K0
在vue中如何监听移动端的返回键
环境:vue.js+vant 问题:首页列表和分类页的列表用的同一个页面,页面区分用的是本地缓存,希望在分类页点击返回的时候,执行清除缓存,刷新页面 解决原理:利用history和浏览器刷新popstate状态去实现 每一次返回都会去历史记录回退 -1 所以就在进入页面之前 往历史记录里面多记录一次当前页面的链接。然后再回退的时候监听刷新,去做一些事情。 具体执行: 1、挂载完成后,判断浏览器是否支持popstate
IT工作者
2022/03/14
3.6K0
在PHP中 为什么in_array(0, ['a', 'b', 'c'])返回true
直观上看,0没有在数组['a', 'b', 'c']中,也不会等于abc这个字符串。
用户9076598
2022/03/02
2.8K0
http返回错误状态_状态码返回0
代码里面我刚刚开始的时候使用的是HttpPost发的请求,另外一边呢,刚刚开始的时候只有一个get请求在那等着呢。
全栈程序员站长
2022/11/01
2.5K0
http返回错误状态_状态码返回0
移动端返回顶部
当页面滚动某个地方,就显示返回顶部图标,否则隐藏 点击可以返回顶部 实现代码跟pc端一致 案例分析: 滚动某个地方显示 事件:scroll页面滚动事件  如果被卷去的头部(window.pageYOffset )大于某个数值 点击,window.scroll(0,0) 返回顶部 //返回顶部模块制作 var goBack = document.querySelector( '.goBack' ); var nav = document.querySelector( 'nav');
星辰_大海
2020/10/09
1.3K0
Linux BSP实战课(网络篇):数据包的接收过程
本文将介绍在Linux系统中,以一个UDP包的接收过程作为示例,介绍数据包是如何一步一步从网卡传到进程手中的。
刘盼
2023/09/20
4590
Linux BSP实战课(网络篇):数据包的接收过程
socket函数发送接收返回值处理
深信服面试问到的问题 read 函数返回值: 大于0:成功读取的数据长度(Byte); 等于0:该 socket 已经关闭; 等于-1:异常发生,包括但不限于以下几种: 超时,errno=11; 连接异常关闭(RST),errno=104; 主动关闭socket后再去 read,errno=9; 非阻塞模式下的没有数据时,errno=11。 write 函数返回值: 大于0:成功写入的数据长度(Byte); 等于0:写入长度为0; 小于0:异常发生,包括但不限于以下几种: 主动关闭再写数据,errno
opencode
2022/12/26
1.9K0
Netty接收客户端连接
昨天的'Netty从0到1的运作流程'文章中我们介绍了Netty如何启动以及如何接收客户端请求, 如果有疑惑可以给我发邮件promiss217@outlook.com或者去我的个人站点https://www.infuq.com/manual/feedback.html提反馈信息.
书唐瑞
2022/06/02
1.4K0
sp_executesql接收返回多个参数实例
近日做项目中需要在EXEC执行Sql字符串时动态的传入参数并接收返回值,于是研究了一下SqlServer中sp_executesql的使用方法,并做了如下的例子。 在使用sp_executesql动态传入与接收返回参数时需注意以下事项,以避免大家走弯路。 例子中@SQLString,@ParmDefinition一定要使用NVARCHAR类型,否则会报“过程需要参数 ‘××××’ 为 ‘ntext/nchar/nvarchar’ 类型。”错误。 文档中说这两个变量赋值的字符串前要加N,我试了试,没加也不报错,不过你最好加上。毕竟人家是官方文档么。
全栈程序员站长
2022/08/26
7830
网络编程-UDP编程
UDP概述:在Java中使用UDP编程,仍然需要使用Socket,因为应用程序在使用UDP时必须指定网络接口(IP地址)和端口号。(主要把数据封装成一个包)
全栈程序员站长
2022/10/29
1.1K0
网络编程-UDP编程
XMLHttpRequest HTTP请求的返回码为0 http status = 0
由于用户在http返回前关闭/取消,或者防火墙等原因,会造成http请求没有status信息。w3c有相应的说明:http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute 4.7.1 The status attribute client . status Returns the HTTP status code. The status attribute must return the result of running these step
用户1258909
2018/07/03
5.8K0
网络编程——UDP编程
计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。因此,为了把计算机网络接入互联网,就必须使用TCP/IP协议。
全栈程序员站长
2022/10/05
1.1K0
网络编程——UDP编程
如何做到每秒接收100万个数据包
上周在一次偶然的谈话中,我无意中听到一位同事说:Linux的网络堆栈太慢了!你不能指望它在每个核每秒处理超过5万个数据包!
用户5166556
2023/03/18
1.1K0
如何做到每秒接收100万个数据包
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
2. UDP 发送和接收 : 计算机 A 向 计算机 B 的 X 端口发送消息 , B 不一定能接收到 , B 能收到并处理该消息的前提是 , B 当前正在监听 X 端口 ;
韩曙亮
2023/03/27
7K0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket  | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )[通俗
2. UDP 发送和接收 : 计算机 A 向 计算机 B 的 X 端口发送消息 , B 不一定能接收到 , B 能收到并处理该消息的前提是 , B 当前正在监听 X 端口 ;
全栈程序员站长
2022/08/31
6.6K0
【Java 网络编程】UDP 服务器 客户端 通信 ( DatagramSocket | DatagramPacket | UDP 发送数据包 | UDP 接收数据包 | 端口号分配使用机制 )[通俗
CreateWindow返回空句柄而GetLastError返回0咋回事
调用CreateWindow或CreateWindowEx创建窗口返回空句柄时,我们总是会调用GetLastError看下错误码,就知道具体错误的原因(比如窗口类未注册),但如果GetLastError返回0没有报错,是怎么回事呢?
gaigai
2019/08/30
2.3K0
C语言函数返回 1 和返回 0 哪个好?
基本上,没有人会将大段的C语言代码全部塞入 main() 函数。更好的做法是按照复用率高、耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。
混说Linux
2023/02/24
2.5K0
C语言函数返回 1 和返回 0 哪个好?
点击加载更多

相似问题

GMT+2,TimeZone getOffset返回0

12

tcpdump返回0个捕获、接收和丢弃的数据包

10

UDP客户端-接收排队的数据包

13

在函数结束后接收并返回数据包

12

Jquery getOffset函数返回未定义

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文