首页 > 代码库 > UDP学习4(单个窗口发送接收数据)
UDP学习4(单个窗口发送接收数据)
接着之前的UDP学习.想在单个窗口中实现接收以及发送数据,这个如何实现呢?首先想到的是通过多线程实现发送数据以及接收数据,这样就把问题解决了.下面是代码:
1 import java.net.*; 2 import java.io.*; 3 class UDPSendThread implements Runnable 4 { 5 private DatagramSocket ds=null; 6 public UDPSendThread(DatagramSocket ds) 7 { 8 this.ds=ds; 9 }10 public void run()11 {12 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));13 String line=null;14 try15 {16 while((line=br.readLine())!=null)17 {18 if("886".equals(line))19 {20 break;21 }22 byte[]buf=line.getBytes();23 DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName24 25 ("127.0.0.1"),10002);26 ds.send(dp);27 }28 }29 catch(Exception ex)30 {31 System.out.println(ex);32 throw new RuntimeException("发送失败");33 }34 }35 }36 37 class UDPReceiveThread implements Runnable38 {39 private DatagramSocket ds=null;40 public UDPReceiveThread(DatagramSocket ds)41 {42 this.ds=ds;43 }44 public void run()45 {46 47 try48 {49 while(true)50 {51 byte[] buf=new byte[1024];52 DatagramPacket dp=new DatagramPacket(buf,buf.length);53 ds.receive(dp);54 String ip=dp.getAddress().getHostAddress();55 String data=http://www.mamicode.com/new String(dp.getData(),0,dp.getLength());56 System.out.println(ip+"......"+data);57 58 }59 }60 catch(Exception ex)61 {62 throw new RuntimeException("接收失败");63 }64 }65 }66 67 class UDPThreadDemo68 {69 public static void main(String[]args) throws Exception70 {71 DatagramSocket dsSend=new DatagramSocket();72 DatagramSocket dsReceive=new DatagramSocket(10002);73 new Thread(new UDPSendThread(dsSend)).start();74 new Thread(new UDPReceiveThread(dsReceive)).start();75 }76 }
通过dos命令行,编译程序,运行,便可以在单个窗口实现发送与接收数据了,如下:
UDP学习4(单个窗口发送接收数据)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。