黑马程序员_udp

来源:互联网 发布:假装情侣聊天软件 编辑:程序博客网 时间:2024/06/04 17:52

---------------------- android培训、java培训、期待与您交流! ----------------------

基于udp的学习,个人感觉很有趣,因为从它开始已经从单一的单机内的自娱自乐变成了局域网乃至互联网的交流。Udp,我们知道是一种面向无连接的传输方式,它的发送接收步骤如下:

1.      建立发送端和接收端。

2.      建立数据包。

3.      调用socket的发送和接收方法。

4.      关闭socket。

特别值得一提的是发送端和接收端是两个独立的运行程序。而Udp所用到的类是DatagramSocket和DatagramPacket。

DatagramSocket类提供了send和receive方法,而send和receive方法所接收的参数类型则是DatagramPacket类的对象,因此,DatagramPacket类是用来封装数据包的,我们可以参考此类的构造方法,下面介绍两个:

DatagramPacket(byte []buf,int length)

DatagramPacket(byte[] buf,int length, InetAddress  address, intport)

需要解释一下的是InetAddress  address 指发送指定的主机地址,port则是指定的端口。

下面是一个小例子,分别定义发送端和接收端:

一.定义一个udp发送端

  1.建立socket服务

  2.提供数据,并将数据封装到数据包中

  3.通过socket服务的发送功能,将数据包发出去

  4.关闭资源。

具体代码:

import java.io.*;

import java.net.*;

public classUdpsend2 {

   publicstaticvoidmain(String []args)throws Exception

   {

    DatagramSocket ds=new DatagramSocket();

    BufferedReader bufr=new BufferedReader(newInputStreamReader(System.in));

    String line=null;

    while((line=bufr.readLine())!=null)

    {

        if("886".equals(line))

            break;

        byte []buf=line.getBytes();

        DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("localhost"),10000);

        ds.send(dp);

    }

    ds.close();

   }

}

二.定义一个接收端

 1.定义socket服务,通常会监听一个端口

2.定义一个数据包,因为要存储收到的字节数据,因为数据包中对象有更多功能可以提取字节数据中不同数据信息。

3.通过socket服务的receive方法将接收到的数据存入已定义好的数据包中。

4.通过数据包中的特有功能,将这些不同的数据取出并打印在控制台上。

5.关闭资源。

具体代码:

import java.net.*;

public classUdpreceive2 {

  publicstaticvoidmain(String []args)throws Exception

  {

       DatagramSocket ds=new DatagramSocket(10000);

       while(true)

       {

           byte []buf=newbyte[1024];

           DatagramPacket dp=new DatagramPacket(buf,buf.length);

           ds.receive(dp);

           String ip=dp.getAddress().getHostAddress();

           String file=new String(dp.getData(),0,dp.getLength());

           System.out.println(ip+"::"+file);

       }

      

  }

}

比较重要的一点事,在新建socket服务时要指定端口,否则接收不到相应的数据。

以上两端代码其实完成了最基本最简单的udp通讯,至于类似于聊天室软件的制作,还需更深层次的学习。

---------------------- android培训、java培训、期待与您交流! ----------------------

原创粉丝点击