技术开发 频道

用java编写简单的UDP网络通信程序

  【IT168 技术文档】

  java中封装了大量的socket API,为编写网络通信程序提供了极大的方便。

  在计算机网络的学习中,大家都已熟练掌握了TCP/UDP的基本原理,在此不在赘述。仅给出接收端和发送端的源代码,供大家讨论和批评。

  发送端代码如下:

  //只要稍加改进,即可发送数据   import java.io.*;   import java.lang.*;   import java.net.*;   public class uclient   {   private DatagramSocket cli;   private DatagramPacket pac;   private byte sb[];   private String sen;   public uclient()   {   Init();   }   public void Init()   {   try   {   //指定端口号,避免与其他应用程序发生冲突   cli=new DatagramSocket(10002);   sb=new byte[1024];   sen="UDP方式发送数据";   sb=sen.getBytes();   pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);   cli.send(pac);   }   catch(SocketException se)   {   se.printStackTrace();   }   catch(IOException ie)   {   ie.printStackTrace();   }   }   public static void main(String args[])   {   new uclient();   }   }

  接收端数据:

  //加以改进代码,可以改变接收方式   import java.io.*;   import java.lang.*;   import java.net.*;   public class userve   {   private DatagramSocket ser;   private DatagramPacket pac;   private byte rb[];   private String rev;   public userve()   {   Init();   }   public void Init()   {   try   {   ser=new DatagramSocket(10005);   rb=new byte[1024];   pac=new DatagramPacket(rb,rb.length);   rev="";   int i=0;   while(i==0)//无数据,则循环   {   ser.receive(pac);   i=pac.getLength();   //接收数据   if(i>0)   {   //指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点   rev=new String(rb,0,pac.getLength());   System.out.println(rev);   i=0;//循环接收   }   }   }   catch(Exception e)   {   e.printStackTrace();   }   }   public static void main(String args[])   {   new userve();   }   }
0
相关文章