前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中请给出UDP的DatagramSocket通信的例子

java中请给出UDP的DatagramSocket通信的例子

作者头像
马克java社区
修改2021-05-11 10:05:09
5250
修改2021-05-11 10:05:09
举报
文章被收录于专栏:java大数据

3.UDP(数据报)协议的通信实例

马克-to-win:在UDP编程当中,技术上没有一个服务器和客户端的概念,即没有类似于TCP中的ServerSocket类,只有主动和被动之说, 客户端和服务器都用DatagramSocket(MyPORT)来绑定到一个端口,发送和接收dataPacket,它们是对等的双方。不过通常来讲, 先发送数据的被认为是客户端。in UDP, there is no concept of server or client, only active and passive, client and server both use new DatagramSocket(MyPORT) to bind to a port to use the port to send and receive the dataPacket, the counterpart which initially send the dataPacket is deemed as the client.  unlike the TCP protocol, there, there is really ServerSocket.

UDP通信主要有两个类,DatagramPacket是数据容器,它携带自己来自何处,以及打算去哪里的信息。DatagramSocket用来发送或接收DatagramPacket。

DatagramPacket不仅需要包含正式的数据,也要包含网络地址以及端口号,以决定它的目的地。

 

例:2.3.1(客户端写,服务器端读)

服务器端:

import java.net.*;

import java.io.*;

import java.util.*;

public class TestMark_to_win {

    static final int MyPORT = 1711;

    public static void main(String[] args) throws IOException {

        byte[] bufreceive = new byte[1000];

        DatagramPacket packetreceive = new DatagramPacket(bufreceive,

                bufreceive.length);//测试结果bufreceive.length是1000

        DatagramSocket socket;

        socket = new DatagramSocket(MyPORT);

        // Block until a datagram appears:

        socket.receive(packetreceive);

        String stringreceive = new String(packetreceive.getData(), 0,

                packetreceive.getLength());

        System.out.println(stringreceive);

        socket.close();

    }

}

客户端程序:

import java.net.*;

import java.io.*;

import java.util.*;

public class Test {

    static final int MyPORT = 1710;

    static final int SERVERPORT = 1711;

    public static void main(String[] args) throws IOException {

        byte[] bufsend = new byte[1000];

        DatagramSocket client;

        InetAddress destination = InetAddress.getByName("localhost");

        client = new DatagramSocket(MyPORT);

        bufsend = "java study".getBytes();// string encode to a byte array

        DatagramPacket sendpacket = new DatagramPacket(bufsend, bufsend.length,

                destination, SERVERPORT);

        client.send(sendpacket);

        client.close();

    }

}

更多请见:https://blog.csdn.net/qq_44639795/article/details/102079039

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档