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