您的位置:首页 > 其它

Udp消息发送接收示例

2009-05-26 14:24 417 查看
在Java中发送和接收UDP消息需要使用到如下两个对象

1、DatagramSocket,重要方法是send和receive

2、DatagramPacket,重要方法是getLength(这个不是必须的)

下面简单模拟一个服务端和一个客户端:首先运行服务端,然后每运行一次客户端,向服务端发送一个UDP消息字符串。程序代码如下:

服务端(接收端)

/**
*
*/
package socket.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/**
* @author ZYWANG
*
*/
public class UdpServer {
public static void main(String[] args) {
try {
//定义UDP监听
DatagramSocket server = new DatagramSocket(10005);
//定义缓冲区
byte[] buffer=new byte[1024];
//定义接收数据包
DatagramPacket packet=new DatagramPacket(buffer,buffer.length);
while (true) {
//接收数据
server.receive(packet);
//判断是否收到数据,然后输出字符串
if(packet.getLength()>0){
String str = new String(buffer,0,packet.getLength());
System.out.println(str);
}
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


客户但(发送端)

]package socket.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
* @author ZYWANG
*
*/
public class UdpClient {
public static void main(String[] args) {
try {
//定义要发送的字符串并转为byte数组
byte[] buffer = "大家好".getBytes();
//定义UDP数据包,需要指定目标地址及端口号
DatagramPacket packet = new DatagramPacket(buffer,buffer.length,InetAddress.getLocalHost(),10005);
//发送数据
new DatagramSocket().send(packet);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: