一、DatagramSocket类
1、构造函数
- public DatagramSocket();//如果要先发送数据可以选择这个
- public DatagramSocket(int port);//如果要先接收数据可以选择这个
- public DatagramSocket(int port,InetAddress laddr);//如果主机有多个IP可以选择这个
2、close方法
不再传输数据时,用close方法释放资源
3、send(DatagramPacket p)方法
发送数据包
4、receive(DatagramPacket p)方法
接收数据包
5、DatagramPacket类
二、DatagramPacket类
1、是数据的封装类,构造函数有以下两个:
- public DatagramPacket(byte[] buf,int length);
- public DatagramPacket(byte[] buf,int length,InetAddress address,int port);
2、getInetAddress和getPort方法
这两个方法分别用来从DatagramPacket对象上取得IP地址和端口号
3、getLength和getData方法
这两个方法分别用来从DatagramPacket对象上取得数据长度和数据内容
三、InetAddress类
1、InetAddress是用于表示IP地址的类
2、getByName方法(静态)
3、getHostAddress方法
例子:创建一个简单的发送端和接收端
//==========================发送端================================
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UdpSend
{
public static void main(String[] args)
{
//创建一个DatagramSocket
DatagramSocket ds = null;
try
{
ds = new DatagramSocket();
} catch (SocketException e)
{
e.printStackTrace();
}
String sendInfo = "hello i am coming,我来了";
//创建DatagramPacket
DatagramPacket dp = null;
try
{
//注意下面的sendInfo.getBytes().length,因为sendInfo中包含中文,一个中文占两个字节
//所以要先转换成byte再取长度
dp = new DatagramPacket(sendInfo.getBytes(), sendInfo.getBytes().length,
InetAddress.getByName("192.168.18.17"), 8888);
} catch (UnknownHostException e1)
{
e1.printStackTrace();
}
try
{
ds.send(dp); //发送数据包
} catch (IOException e)
{
e.printStackTrace();
} finally
{
ds.close();
}
}
}
//==========================接收端================================
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpReceive
{
public static void main(String[] args)
{
DatagramSocket ds = null;
try
{
ds = new DatagramSocket(8888);
} catch (SocketException e)
{
e.printStackTrace();
}
DatagramPacket dp = null;
byte[] buf = new byte[1024];
dp = new DatagramPacket(buf,1024);
try
{
ds.receive(dp);
dp.getData();
System.out.println(new String(buf,0,dp.getLength()));
String IP = new String();
IP = dp.getAddress().getHostAddress();
System.out.println("IP="+IP);
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
ds.close();
}
}
}
阅读(733) | 评论(0) | 转发(0) |