用java编写简单UDP网络通信程序
java中封装了大量的socketAPI,为编写网络通信程序提供了极大的方便.
在计算机网络的学习中,大家都已熟练掌握了TCP/UDP的基本原理,在此不在赘述.仅给出接收端和发送端的源代码,供大家讨论和批评.
发送端代码如下:
//只要稍加改进,即可发送数据
importjava.io.*;
importjava.lang.*;
importjava.net.*;
publicclassuclient
{
privateDatagramSocketcli;
privateDatagramPacketpac;
privatebytesb[];
privateStringsen;
publicuclient()
{
Init();
}
publicvoidInit()
{
try
{
//指定端口号,避免与其他应用程序发生冲突
cli=newDatagramSocket(10002);
sb=newbyte[1024];
sen="UDP方式发送数据";
sb=sen.getBytes();
pac=newDatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);
cli.send(pac);
}
catch(SocketExceptionse)
{
se.printStackTrace();
}
catch(IOExceptionie)
{
ie.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[])
{
newuclient();
}
}
接收端数据:
//加以改进代码,可以改变接收方式
importjava.io.*;
importjava.lang.*;
importjava.net.*;
publicclassuserve
{
privateDatagramSocketser;
privateDatagramPacketpac;
privatebyterb[];
privateStringrev;
publicuserve()
{
Init();
}
publicvoidInit()
{
try
{
ser=newDatagramSocket(10005);
rb=newbyte[1024];
pac=newDatagramPacket(rb,rb.length);
rev="";
inti=0;
while(i==0)//无数据,则循环
{
ser.receive(pac);
i=pac.getLength();
//接收数据
if(i>0)
{
//指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点
rev=newString(rb,0,pac.getLength());
System.out.println(rev);
i=0;//循环接收
}
}
}
catch(Exceptione)
{
e.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[])
{
newuserve();
}
}