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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 华行天下 中级黑马   /  2013-10-17 22:10  /  1049 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 华行天下 于 2013-10-18 10:22 编辑

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

class Send implements Runnable{
        private DatagramSocket ds;
        public Send(DatagramSocket ds){
                this.ds=ds;
        }
        @Override
        public void run() {
                // TODO Auto-generated method stub
                try {
                        BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
                        String line=null;
                        while((line=bufr.readLine())!=null)
                        {
                                if("886".equals(line))
                                        break;
                                byte[] buf=line.getBytes();
                                DatagramPacket dp=
                                                new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.102"),10003);
                                
                                ds.send(dp);
                        }
                } catch (Exception e) {
                        // TODO: handle exception
                        throw new RuntimeException("发送端失败");
                }
        }
        
}

class Rece implements Runnable{
        private DatagramSocket ds;
        public Rece(DatagramSocket ds){
                this.ds=ds;
        }
        @Override
        public void run() {
                // TODO Auto-generated method stub
                try {
                        byte[] buf=new byte[1024];
                        while(true){
                                DatagramPacket dp=new DatagramPacket(buf,buf.length);
                                ds.receive(dp);
                                
                                String ip=dp.getAddress().getHostAddress();
                                String data=new String(dp.getData(),0,dp.getLength());
                                System.out.println(ip+"::"+data);
                        }
                } catch (Exception e) {
                        // TODO: handle exception
                        throw new RuntimeException("数据读取失败");
                }
               
        }
        
}


public class ChatDemo {

        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                DatagramSocket sendSocket=new DatagramSocket();
                DatagramSocket receSocket=new DatagramSocket(10003);
               
                new Thread(new Send(sendSocket)).start();
                new Thread(new Rece(receSocket)).start();
               
        }

}

为什么程序运行后,只能和自己发一次程序就不能再发了啊?

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 很给力!

查看全部评分

1 个回复

倒序浏览
我把你的代码复制过来,运行把ip地址改成localhost,别的地方没变,运行一切正常。控制台输入一句,马上输出 ip地址+"::"+刚才输入的内容。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 答案一针见血,赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马