我使用蓝牙编程做一个联机游戏。
大家都知道蓝牙编程是用socket和输入输出流socket.getInputStream();这样的语句进行连接对应。
但是到了真正使用的时候才发现了问题。
当我在一台手机发送信息之后,接着不久又再发送一段信息,有时就会出现错误了。
蓝牙的读取使用bytes = mmInStream.read(buffer);buffer的定义:byte[] buffer = new byte[1024],bytes是一个整型,用来记录信息的长度。mmInStream是一个InputStream的对象且已经通过上面的socket语句连接完成。
出现的错误就是,由于信息的发送时间间隔可能是比较短吧(但确实分两次发送),我在另外一台手机里面接收信息,然后通过信息判断对应信息该执行的操作动画效果之类的。但是当我接收到信息的时候有时候却是两个信息连在一起的,合成了一个信息,导致我接收方对信息的判断出错。
我对socket和输入输出流不太了解,只知道简单的应用,求解造成这情况的原因和解决方法!
在线等答复!
还需要我提供什么测试数据或者是相关代码的敬请跟帖回复!
大家都知道蓝牙编程是用socket和输入输出流socket.getInputStream();这样的语句进行连接对应。
但是到了真正使用的时候才发现了问题。
当我在一台手机发送信息之后,接着不久又再发送一段信息,有时就会出现错误了。
蓝牙的读取使用bytes = mmInStream.read(buffer);buffer的定义:byte[] buffer = new byte[1024],bytes是一个整型,用来记录信息的长度。mmInStream是一个InputStream的对象且已经通过上面的socket语句连接完成。
出现的错误就是,由于信息的发送时间间隔可能是比较短吧(但确实分两次发送),我在另外一台手机里面接收信息,然后通过信息判断对应信息该执行的操作动画效果之类的。但是当我接收到信息的时候有时候却是两个信息连在一起的,合成了一个信息,导致我接收方对信息的判断出错。
我对socket和输入输出流不太了解,只知道简单的应用,求解造成这情况的原因和解决方法!
在线等答复!
还需要我提供什么测试数据或者是相关代码的敬请跟帖回复!
解决方案 »
- 求助在下一个定时启动的时候先关掉显示的activity,然后再启动他
- 有把Android装在普通PC里的人吗,我虚拟机里网卡驱动就不知道怎么弄
- android 如何判断一个进程是系统进程还是用户进程?
- 请教关于bindService的问题
- 关于 安卓模拟器跟电脑通讯的问题??
- 如何做通讯录,基于android平台
- 关于安卓或者IOS浏览器程序开发的问题
- android ndk编译的C++可执行程序已经能够运行了,但如何实现在android系统上自启动呢?
- android编译错误,logcat已贴出!菜鸟求指点 !
- draw9path.bat运行一闪而过
- you are office feint requires an active network connection
- 大侠请进,android listview添加单选按钮。为什么总是多选
按照这样的传输机制的话,那么如果我的信息量不足1024个字节的话,我也需要补充满1024个字节……感觉这样对于信息传输通道会不会造成过多的不必要的数据包大小?还有就是我还需要在发送信息之前检查信息量是否完全充满了1024个字节数,如果不足我还需要调用相关函数进行补充。这样是不是也会造成发送信息这端执行的效率过低?假如我要采用你说的这种补充满1024个字节的发送信息机制,那么请问可不可以提供一个比较方便的函数调用给我参考一下?谢谢!
public void writeFixedString(String s,int size,DataOutput out) throws IOException{
for (int i = 0; i < size; i ++) {
char c = 0;//用0填充
if (i < s.length()) {
ch = s.charAt(i);
}
out.writeChar(ch);
}
}
接受端做相应的处理。个人的想法,希望能帮到你。
首先,谢谢你的答复。
您最后的回复是写了一个客户端发送的信息生成函数,将要发送的信息通过自己的定制的长度和字符串形成一个固定长度的信息。其中调用了一个for循环和String串中的char的赋值,我不太懂时空代价的具体计算,但我总觉得这样的一个循环会浪费太多的时间,特别是当信息的长度有时比较大有时比较小的时候。比如1024个字节,有时需要用到将近1024个字节,有时却只需发送几个字节的消息,但是我每次都需要将剩余的空间补足到1024个字节再发送,那就相当的浪费了~