//服务器端
import java.net.*;
import java.io.*;
public class TestUDPServer{
public static void main(String args[])throws Exception
{
byte buf[]= new byte[1024];
//数据报包用来实现无连接包投递服务
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//数据报套接字是包投递服务的发送或接收点
DatagramSocket ds = new DatagramSocket(8888);
while(true)
{
//从此套接字接收数据报包
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
//从包含的输入流中读取此操作需要的字节
System.out.println(dis.readLong());
}
}
}
//客户端
import java.net.*;
import java.io.*;
public class TestUDPClient
{
public static void main(String args[])throws Exception
{
//定义一个Long类型的数据
long n= 10000L;
//声明一个输出管道
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中
DataOutputStream dos = new DataOutputStream(baos);
//将一个 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。如果没有抛出异常,则计数器 written 增加 8。
dos.writeLong(n);
//创建一个新分配的 byte 数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中。
byte[] buf = baos.toByteArray();1
//构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。
DatagramPacket dp = new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",8888));
DatagramSocket ds = new DatagramSocket(6666);
//从此套接字发送数据报包
ds.send(dp);
//关闭此数据报套接字
ds.close();
}
}
posted on 2009-05-17 09:29
Werther 阅读(309)
评论(0) 编辑 收藏 所属分类:
10.Java