魅力博客

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

 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();
 }
}

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
友情链接
安全认证

Powered By Z-BlogPHP 1.7.2 Theme By魅力博客


知识共享许可协议
本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。
网站备案号粤ICP备15104741号-1