UDP信息的接收?
基于UDP的通信,老师讲的我是这么理解的:客户端发送信息后,服务器端接收信息。通过recieve(packet)方法,把接收的信息存储在服务器端的packet中,然后通过构造把packet中的信息转到byte[]数组中,在把数组转为字符串,得到发送过来的信息。不知道理解的对不对?那这样的话,发送过来的信息太长,byte[]的长度不够怎么办?有所循环读取的,我看了API也没有想到循环读取的方法。
基于UDP的通信,老师讲的我是这么理解的:客户端发送信息后,服务器端接收信息。通过recieve(packet)方法,把接收的信息存储在服务器端的packet中,然后通过构造把packet中的信息转到byte[]数组中,在把数组转为字符串,得到发送过来的信息。不知道理解的对不对?那这样的话,发送过来的信息太长,byte[]的长度不够怎么办?有所循环读取的,我看了API也没有想到循环读取的方法。
2016-08-07
我记得老师说过这么一句话:byte[]是数据报中用来存储数据的。 所以我的理解是:通过receive(packet)方法,把接收的信息存在服务器端的packet中,实际上就是存在了packet中的byte[]中,然后通过String info = new String(data,0,packet.length)把packet中的byte[]转化为了String类型。 至于你提问的byte[]长度不够,我想你担心的是用来接收数据的byte data = new byte[1024];太短吧,我以前也有过这种疑问。我查过很多资料,官方的说法不好理解,民间的说法是:byte[1024]就像缓存一样去存储接收到的信息,当byte[1024]装满的时候,会清空,再从刚才没存放完的地方继续存,依次类推,直到存放完所有接收到的数据。 这是我个人的理解,你参考看看
举报