随笔-199  评论-203  文章-11  trackbacks-0

//服务器端
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 阅读(304) 评论(0)  编辑  收藏 所属分类: 10.Java

只有注册用户登录后才能发表评论。


网站导航: