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