Chinaunix首页 | 论坛 | 博客
  • 博客访问: 283845
  • 博文数量: 28
  • 博客积分: 11
  • 博客等级: 民兵
  • 技术积分: 895
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-19 19:50
个人简介

不畏浮云遮望眼,只缘身在最高层

文章分类

全部博文(28)

文章存档

2014年(1)

2013年(27)

分类: Java

2013-02-06 10:38:55

  
/*UDP网络编程实例*/
/*1.发送一次,接受一次*/
/*1.UDP是一种尽力而为的传送数据方式,它不能保证数据能安全到达,也不能保证什么时候到
 *2.UDP是面向无连接的,传送速度快
 *3.效率高,但是容易丢失数据包
 *UDP终端交换的是一种称为数据报文的信息
 *需求:通过UDP传输方式将一段文字数据发送出去
 *步骤:1.建立UDPsocket服务,
 *     2.提供数据,并将数据分装到数据包中
 *     3.通过socket服务的send发送功能,将数据发送出去
 *     4.关闭资源*/
import java.net.*;
import java.io.*;
import java.util.*;

class UDPsend
{
	public  static  void main(String[]  args) throws Exception
	{
		//1.创建UDP服务,通过DatagramSocket对象
		DatagramSocket ds=new DatagramSocket(10000);
		//2.确定数据,并封装成数据包。
		byte [] data="i love java".getBytes();//把字符串存到数组里面
		DatagramPacket dp=new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.102"),6789);
		//3.通过socket服务,将已有的数据发送出去
	        ds.send(dp);
		//4.关闭资源
	        ds.close();
	}
}


class UDPreceive
{
	public  static  void main(String[]  args) throws Exception
	{
	    DatagramSocket ds1=new DatagramSocket(6789);
	    //2.定义数据包,用于存数据
	    byte[] buf=new byte[1024];
	    DatagramPacket dp1=new DatagramPacket(buf,buf.length);
	    //3通过receive接收
	    ds1.receive(dp1);
	    //4.通过数据包中的方法来获取数据
	    String ip1=dp1.getAddress().getHostAddress();
String data0=new String(dp1.getData(),0,dp1.getLength());
	    int port=dp1.getPort();
	    System.out.println(ip1+"::"+data0+"::"+port);
	}
}

 

如上图编译所示:先编译UDPdemo1.java,在运行服务器端,再运行客户端,发送一次接收一次 注意:客户端和服务端要分开编写,编写完后,先运行服务端,让服务端开始等待客户端的数据,再运行客户端

阅读(2406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~