Android平台下Socket编程中接收缓冲的问题
来源:互联网 发布:保研自我介绍 知乎 编辑:程序博客网 时间:2024/05/10 14:30
Android平台下Socket编程中接收缓冲的问题
在Android下UDP编程时,接收缓冲区如果不清空,当下次收到的字节数n小于前一次收到的字节数m时,则只有前n个字节会更新,再加上后面的m-n个字节构成一个m个字节的数据串。举个例子来说:第一次发送的数据为“123”,从缓冲区收到数据为“123”,不清空缓冲区;第二次发送的数据为“a”,而从缓冲区收到的数据却成了“a23”,即只替换了第一个字节的数据。
例如下面的代码:
public class Server implements Runnable{
@Override
public void run(){
try {
/* 获得服务器地址 */
InetAddress serverAddr = InetAddress.getByName(UDPConnection.localip);
/* 创建新的UDP-Socket */
DatagramSocket socket = new DatagramSocket(UDPConnection.localport, serverAddr);
/* 预留100字节缓冲区 */
byte[] buf = new byte[100];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
/* 接收UDP包 */
while(UDPConnection.onRunning){
socket.receive(packet);
UDPConnection.strSvr = new String(packet.getData());
Arrays.fill(buf,(byte)0);//清空Buffer
}
} catch (Exception e){
Log.e("UDP", "S: Error", e);
}
}
}
在接收循环中,当收到一个数据包,将它的数据取出后,使用Arrays.fill(buf,(byte)0)来清空字节数组buf。这里不可以用buf = null来清空数组,会造成java.lang.NullPointerException错误。
- Android平台下Socket编程中接收缓冲的问题
- socket接收缓冲的思考
- android平台通过socket向C++服务器端发送数据和接收数据的相关问题
- android平台通过socket向C++服务器端发送数据和接收数据的相关问题
- android平台下的红外接收设备驱动
- Android中短信的广播接收问题
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- linux socket编程中出现发送或接收错误时退出程序问题
- 关于Android Socket编程遇到的问题
- Android Socket编程所注意的问题
- ipv6 socket 编程中遇到的问题
- 关于SOCKET编程中“烫烫烫...”的问题
- android中socket编程
- android中socket编程
- Android下的socket关闭问题
- android下socket编程问题:服务器关闭时,客户端发送请求的异常处理
- httpclient中文乱码解决
- [2月8日的脚本] 如何在Windows 8的开始屏幕上固定项
- C++进阶参考好书
- JAVA实现Excel导入/导出
- Spring的分布式事务,使用或不用XA - 2
- Android平台下Socket编程中接收缓冲的问题
- 80个Python经典资料(教程+源码+工具)汇总——下载目录(转)
- php codeigniter 数据排序
- kindeditor配合SyntaxHighlighter实现代码高亮
- 远程医疗系统的构建以及系统中音视频通讯模块开发的建议
- [2月11日的脚本] 如何在Windows Server 2012中批量导出虚拟机 (PowerShell)
- JAVA学习第一回:开发环境配置与HelloWorld:初学涂鸦
- WebService 头部认证信息----基于ksoap2-android使用.Net Webservice
- 小网站备份当日上传的文件