黑马程序员技术交流社区

标题: upt多线程问题,我这个代码怎么没效果啊 [打印本页]

作者: 谭荣强    时间: 2014-3-30 20:38
标题: upt多线程问题,我这个代码怎么没效果啊
只能发送,却收不到
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();       
        }
}
作者: 一诺千金    时间: 2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装了成为线程,在多个客户端并发请求是读到请求,运行RUn方法,也就是加一个处理线程。客户端弄成单独的线程是何意?思路有点崴泥应该是。我再看看
作者: 谭荣强    时间: 2014-3-30 22:53
一诺千金 发表于 2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装 ...

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

哥们,貌似这个是udp协议,是数据包传输的,你怎么说到tcp协议,客户端服务端去了,真心不理解,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2