网络编程UDP协议

网络编程UDP协议
课程大纲
一、 UDP协议概述
1、 UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据包都是独立的信息,包括完整的源地址和目的地址,他在网络上以任何可能的路径传往目的地,因此能否到大目的地,到大目的地的时间以及正确性都是不能被保证的,每个被传输的数据包的大小必须保证在64K以内。
2、 主要使用以下两个类:
(1)、DatagramPacket:此类表示数据报包
(2)、DatapramSocket:此类表示发送和接受数据报包的套接字。
二、 UDP服务器与客户端程序
1、 服务器端:
(1)、String info = “…….”;
(2)、//将信息封装成数据报
Byte[] bytes = Info.getBytes();
(3)、DatagramSocket dp = new DatagramSocket(bytes,0,bytes.lenth(),InetAddress.getByName(“localhost”),5000)//客户端5000端口监。
(4)DatagramSocket server new DatagramSocket(5000);//服务器的端口。
(5)、server.send(dp);//发送数据报
(6)、server.close();
2、客户端
(1)、byte[] b = new byte[1024];接受内容
(2)、DatagramPacket dp = new DatagramPacket(b,b.length);//接收内容
(3)、DatagramSocket client = new DatagramSocket(5000);//客户端在5000端口等待。
(4)、client.receive(dp);接受内容
(5)、System.out.pritln(new String(dp.getData(),0,dp.getlength()))
(6)、client.close();

服务端代码

package us.google.www;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
* UDP发送端
* @author chongrubujing
*
*/
public class UDPServerDemo {

public static void main(String[] args) throws IOException {
    String info = "我是一只小小鸟";
    //把数据转换成字节数组
    byte[] bytes = info.getBytes();
    //创建一个数据包对象,参数(要发送的字节数组,数组起始位置,要发送数组的长度,InetAddress,接收端端口号)
    DatagramPacket dp =new DatagramPacket(
            bytes,0,bytes.length,
            InetAddress.getByName("192.168.0.51"),
            5000);
    //创建一个UDP协议的Socket对象
    DatagramSocket ds  = new DatagramSocket(300);
    ds.send(dp);//发送数据报
    System.out.println("发送完毕!");
}

}

客户端代码

package us.google.www;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
* UDP接收端
* @author chongrubujing
*
*/
public class UDPClientDemo {

public static void main(String[] args) throws IOException {
    byte[] bytes = new byte[1024];
    //创建一个数据包对象
    DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
    //创建DUP协议的Socket对象
    DatagramSocket ds = new DatagramSocket(000);//在此端口进行监听
    System.out.println("接受端正在接受数据!");
    ds.receive(dp);//接受数据,该方法会造成阻塞
    String info = new String(dp.getData(),0,dp.getLength());
    System.out.println(info);
    ds.close();

}

}

发布了163 篇原创文章 · 获赞 18 · 访问量 10万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章