基于UDP编程

UDP协议:与TCP不同的是,UDP是面向非连接的,且效率较高,不需要等待服务器的回应。它类似于现实中的发短信和邮件等,发送方只管发送信息即可,无需关注信息是否丢失。

服务器端:

> package com.geminno.text15.udp;

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

public class MyServer {
    public static void main(String[] args) {
        //创建服务器端指定端口
        DatagramSocket ds=null;
        DatagramPacket dgs=null;
        try {
            ds=new DatagramSocket(8855);
            //准备容器存储接受的数据
            byte [] bytes=new byte[1024];
            //创建一个datagrampacket对象,用来接受数据
             dgs=new DatagramPacket(bytes,bytes.length);
            //服务器端接受数据
            ds.receive(dgs);
            //分析数据
            byte[] data=dgs.getData();
            System.out.println(new String(data,0,data.length));

        } catch ( IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            ds.close();
        }
    }   
}

客户端:
>package com.geminno.text15.udp;

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


public class MyClient {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
            DatagramSocket client=null;
            //创建客户端对象
            try {
                client=new DatagramSocket(9999);
                //准备数据
                String s="快乐大本营";
                byte[] data=s.getBytes();
                //准备数据包
                DatagramPacket dgs=new DatagramPacket(data,data.length ,new InetSocketAddress("127.0.0.1", 8855) );
            //发送信息
                client.send(dgs);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                client.close();
            }
    }
}

你可能感兴趣的:(基于UDP编程)