网络编程--基于UDP的Socket编程

1、使用无连接的数据报(UDP)进行通信

(1)什么是Datagram?
  • 数据报是网上传输的独立数据包,数据报是否能够正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。
(2)Java中使用Datagram与DatagramPacket类来完成数据报(UDP)进行通信。
(3)DatagramSocket类利用UDP协议来实现客户与服务器的Socket。
(4)send:发送数据报
(5)recieve:接收数据报

2、基于UDP的Socket编程

本个示例包含两端代码:UDPServer和UDPClient。UDPServer先启动,并等待UDPClient和自己打招呼。当UDPClient和自己打招呼后,UDPServer回应UDPClient。具体代码如下:
(1)UDPServer

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

/**
 * 使用UDP进行通信
 * 服务端
 * @author Chuan
 *
 */
public class UDPServer
{
    public static void main(String[] args) throws IOException
    {
        DatagramSocket ds = new DatagramSocket(5000);
        
        /*
         * 接收客户端的消息
         */
        //创建用于接收客户端发送的数据报的数据报
        byte[] buffer = new byte[1024];
        DatagramPacket packetRec = new DatagramPacket(buffer, buffer.length);
        ds.receive(packetRec);
        //处理接收到的数据
        String msg = new String(buffer, 0, packetRec.getLength()); //packetRec.getLength()
        System.out.println(msg);
        
        /*
         * 向客户端发送消息
         */
        byte[] str = "welcom".getBytes();
        DatagramPacket packetSend = new DatagramPacket(str, str.length, 
                packetRec.getAddress(),packetRec.getPort());
        ds.send(packetSend);
        
        //关闭socket
        ds.close();
    }
}

(2)UDPClient

/**
 * 使用UDP进行通信
 * 客户端
 * @author Chuan
 *
 */
public class UDPClient
{
    public static void main(String[] args) throws IOException
    {
        DatagramSocket dS = new DatagramSocket();
        
        /*
         * 向服务端发送消息
         */
        byte[] str = "hello".getBytes();
        DatagramPacket dpSend = new DatagramPacket(str, str.length, 
                InetAddress.getByName("localhost"),5000);
        dS.send(dpSend);
        
        /*
         * 接收服务端的消息
         */
        byte[] msg = new byte[1024];
        DatagramPacket dpRecieve = new DatagramPacket(msg, msg.length);
        dS.receive(dpRecieve);
        System.out.println(new String(msg, 0, dpRecieve.getLength()));
        
        dS.close();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Socket编程 1基础知识 协议 端口号(辨别不同应用) TCP/IP协议 是目前世界上应用最广泛的协议是以TC...
    __豆约翰__阅读 4,739评论 0 3
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 4,997评论 0 10
  • 大家好,我是徐爱卿。博客地址:flutterall.com 引言 Android网络编程一直都是我想记录的一篇文章...
    徐爱卿阅读 45,621评论 52 218
  • 学习过程是看毕向东老师的视频。 1.网络模型 面试的时候,技术总监最后和我说到这里时,我表示一脸蒙蔽,说不出这7层...
    英勇青铜5阅读 4,158评论 0 13
  • 守住读书的底线有感而发于王蒙的《守住中国人的底线》,此书是王蒙的散文集,文中指出了当代中国人的很多现象,值得深思和...
    溪南客阅读 3,222评论 4 4