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

只能发送,却收不到
import java.io.*;
import java.net.*;
class sent implements Runnable
{
        private DatagramSocket ds;
        public sent(DatagramSocket ds)
        {
                this.ds=ds;
        }
        public void run()//throws Exception//被覆盖的方法未抛出Exception
        {
                try
                {         
                        BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
                        String line =null;
                        while ((line=buff.readLine())!=null)
                        {
                                if (line.equals("over"))
                                {
                                        break;
                                }
                                byte[] buf = line.getBytes();
                                DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);
                                ds.send(dp);
                        }         
                        buff.close();
                }
                catch (Exception e)
                {
                        throw new RuntimeException("发送失败");
                }               
        }
}
class rec implements Runnable
{       
        private DatagramSocket ds;
        public rec(DatagramSocket ds)
        {
                this.ds= ds;
        }
        public void run()  
        {       
                try
                {                         
                        while (true)
                        {               
                                byte[] buf = new byte[1024];
                                DatagramPacket dp = new DatagramPacket(buf,buf.length);
                                ds.receive(dp);
                                String ip=dp.getAddress().getHostAddress();
                                String data = new String(dp.getData(),0,dp.getLength());
                                int    port = dp.getPort();
                                System.out.println(data+"::"+ip+"::"+port);
                        }
                }                                  
                catch (Exception e)
                {
                        throw new RuntimeException("接受失败");
                }                                       
        }
}
class day2310
{
        public static void main(String[] args) throws Exception
        {
                DatagramSocket ds = new DatagramSocket();
                DatagramSocket ds1 = new DatagramSocket(10002);
                sent s = new sent(ds);
                rec r = new rec(ds1);
                Thread t1 = new Thread(s);
                Thread t2 = new Thread(r);
                t1.start();
                t2.start();       
        }
}

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装了成为线程,在多个客户端并发请求是读到请求,运行RUn方法,也就是加一个处理线程。客户端弄成单独的线程是何意?思路有点崴泥应该是。我再看看
回复 使用道具 举报
一诺千金 发表于 2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装 ...

老毕视频的例子,一个线程发数据,一个线程就收数据,读不出来。
回复 使用道具 举报
一诺千金 发表于 2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装 ...

哥们,貌似这个是udp协议,是数据包传输的,你怎么说到tcp协议,客户端服务端去了,真心不理解,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马