慕村3124171
我只看出来了UDPServer的socket应该放到while循环外面创建,其他的没发现什么问题
小乔要努力变强
你要发送的数据大于接收的话,要分开发送,一次发送定量的(这么理解)--->涉及到别的知识了 分包发送
接收到多个分包发送的数据 --->组包处理----具体咋回事,脑东西就是把你之前拆开的数据在拼回去
慕粉1830186116
那好,你把电脑所有应用程序打开,不关,然后你再去运行一个程序,要是你做了,还来问这句话,算我输
慕粉1830186116
java 的异常可以分为两个大类,其中的RuntimeException 及其子类不要求捕捉,而其它的异常要求捕捉。比如RuntimeException 下的子异常,数组越界异常、空指针异常等。而非RuntimeException 异常有:Socket异常、IO异常等。
RuntimeException 是在程序中可以完全避免的,比如数组越界异常,只要我在程序里作个判断,如果要访问的数组元素下标和数组的长度作一下比较就知道会不会越界。而另一方面,非RuntimeException 则是程序无法避免的,比如IO异常。
不动听
Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理;try用来指定一块预防所有异常的程序;
catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;
throw语句用来明确地抛出一个异常;
throws用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟);
finally为确保一段代码不管发生什么异常状况都要被执行;
希望能够帮助到你。
律生息
1024B等于1K。
慕盖茨7413949
字节类型
qq_为了美好的明天
下面的异常包含下面的异常吧!
新人沈琦斌
我记得老师说过这么一句话: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]装满的时候,会清空,再从刚才没存放完的地方继续存,依次类推,直到存放完所有接收到的数据。 这是我个人的理解,你参考看看
haqiang
进程阻塞状态也称进程等待状态,是指进程等待某一特定事件的出现(如I/O操作),在该过程中,进程依旧位于内存内,且占有CPU资源.
芊芊2
有办法避免吗
夜还没黑
刚刚有点问题,应该是在37行代码之前加一句socket2.send(packet)
Mardanof2
DatagramPacket packet1=new DatagramPacket(bytes1, 0, bytes1.length,address,port);这里只有4个参数吧?第二个参数0是什么作用?
慕粉1651148
这里是用String类的构造函数将字节类型类型转换成字符串类型,toString是输出方法不具有类型转换功能,除非你在方法里转换成字符串再return字符串,明显前者方便一行代码解决问题.
weibo_何冉鳳迷夢_0
什么意思?
felix12
提交的数据多的时候,可以循环往数组里面存放,每次存放1024字节,这样就不会导致溢出的发生了