A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

文浩

初级黑马

  • 黑马币:60

  • 帖子:23

  • 精华:0

package cn.itcast.net.p3.chat;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Rece implements Runnable {

        private DatagramSocket ds;

        public Rece(DatagramSocket ds) {
                this.ds = ds;
        }

        @Override
        public void run() {
                try {
                        while (true) {

                                // 2,创建数据包。
                                byte[] buf = new byte[1024];//要是这里1024不够存储接受的数据,你们会怎么写,但是不知道该怎么实现。
                                DatagramPacket dp = new DatagramPacket(buf, buf.length);

                                // 3,使用接收方法将数据存储到数据包中。
                                ds.receive(dp);// 阻塞式的。

                                // 4,通过数据包对象的方法,解析其中的数据,比如,地址,端口,数据内容。
                                String ip = dp.getAddress().getHostAddress();
                                int port = dp.getPort();
                                String text = new String(dp.getData(), 0, dp.getLength());
                               
                                System.out.println(ip + "::" + text);
                                if(text.equals("886")){
                                        System.out.println(ip+"....退出聊天室");
                                }

                        }
                } catch (Exception e) {

                }

        }

}
UDP网络编程接受端,new接收包类时定义的字节数组容量不够存储接收的数据,我准备用while循环 将数据存到buf中,没存满一次就添加到接受包的后面。是这样子的么??

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马