首页 > 开发 > Java > 正文

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

2024-07-13 09:55:03
字体:
来源:转载
供稿:网友

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

中国最大的web开发资源网站及技术社区,
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表