JAVA中串口通信接受数据时 Inputstream.read(new byte[20])

我在发送端发送2个byte,接受端接收到了,后面18个字节都默认为0。我想知道有什么方法解决?目标:只接受发送端的2个byte... 我在发送端发送2个byte,接受端接收到了,后面18个字节都默认为0。我想知道有什么方法解决?
目标:只接受发送端的2个byte
展开
 我来答
匿名用户
2014-10-16
展开全部

你用循环判断一下,判断是不是默认值,当是默认值就退出,用变量记录一下循环的次数,就代表


数据的长度,取的时候只取那么长的就行了,我上次找到了的,代码被我删了,我再找找默认值,好


像是/u.....


实际上是0,但是数据中有0的话就不行

import java.net.*;
import java.io.*;
 class tcpchuanshu  {
public static void main(String[] args) throws Exception {
Socket s=new Socket("127.0.0.1",9000);
OutputStream out=s.getOutputStream();
//向输出流中写入数据
out.write("你好,服务端".getBytes());
//获取输入流数据
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
s.close();
}
}





import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

class Server
{
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(9000);
System.out.println("我是服务端,监听9000端口");
Socket s=ss.accept();
System.out.println("有客户端连接");
InputStream in=s.getInputStream();
int len=0;
byte[] buf=new byte[1024];
in.read(buf);
while(buf[len]!=0)
{
len++;
}
System.out.println(new String(buf,0,len));
OutputStream out=s.getOutputStream();
out.write("你也好".getBytes());
s.close();
}
}
更多追问追答
追问
我只是判断了inputstream.availiable()>0,就把字节流inputstream.read()全部读取,没有判断到哪里结束呢。你写点代码吧,文字看得我累。
追答
byte[] buf=new byte[1024];
    in.read(buf);
        while(buf[len]!=0)//这个循环就是判断是否为默认值
        {
            len++;
        }
        System.out.println(new String(buf,0,len));
xixiaohui002
2014-10-16 · TA获得超过1238个赞
知道小有建树答主
回答量:673
采纳率:50%
帮助的人:645万
展开全部
Inputstream.read方法会返回一个int,代表实际收到的字节数,根据这个值来截取字节数组就可以了
追问
怎么截取啊 代码怎么写
追答
// 定义临时缓冲区
byte[] buf = new byte[20];
// 读数据
int len = Inputstream.read(buf);
// 根据实际数据长度定义输出缓冲区
byte[] truebuf = new byte[len];
// 拷贝实际的数据
System.arraycopy(buf,0,truebuf,0,len);

// truebuf就是两字节的实际数据
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式