UDP通信例子

服务端:

package com.socket.udp;

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

/**
 * 基于UDP协议通信,服务端程序。
 */
public class Server
{
    private DatagramSocket server = null;
    private InetSocketAddress addr = null;
    private final byte[] buffer = new byte[256];
    private DatagramPacket packet = null;

    public Server(String host, int port) throws SocketException
    {
        this.addr = new InetSocketAddress(host, port);
        this.server = new DatagramSocket(this.addr);
        System.out.println("服务端开启");
    }

    /**
     * 接收
     */
    public String receive() throws IOException
    {
        this.packet = new DatagramPacket(this.buffer, this.buffer.length);
        this.server.receive(this.packet);
        return new String(this.packet.getData(), 0, this.packet.getLength());
    }

    /**
     * 发送
     */
    public DatagramPacket response(String info) throws IOException
    {
        DatagramPacket p = new DatagramPacket(this.buffer, this.buffer.length, this.packet.getAddress(), this.packet.getPort());
        p.setData(info.getBytes());
        this.server.send(p);
        return p;
    }

    public static void main(String[] args) throws IOException
    {
        String serverHost = "127.0.0.1";
        int serverPort = 10000;
        Server server = new Server(serverHost, serverPort);
        while (true)
        {
            System.out.println("服务端接收到:" + server.receive());
            server.response("server说:客户端你好!");
        }
    }

}

客户端:

package com.socket.udp;

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

/**
 *  基于UDP协议通信,客户端程序。
 */
public class Client
{
    private DatagramSocket client = null;
    private DatagramPacket packet = null;
    private final byte[] buffer = new byte[1024];

    public Client(String host, int port, byte[] bytes) throws SocketException, UnknownHostException
    {
        this.client = new DatagramSocket();
        this.packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(host), port);
        System.out.println("客户端开启");
    }

    /**
     * 发送
     */
    public DatagramPacket send() throws IOException
    {
        this.client.send(this.packet);
        return this.packet;
    }

    /**
     * 接收
     */
    public String receive(String host, int port) throws IOException
    {
        DatagramPacket p = new DatagramPacket(this.buffer, this.buffer.length, InetAddress.getByName(host), port);
        this.client.receive(p);
        return new String(p.getData());
    }

    public String receive2() throws IOException
    {
        DatagramPacket p = new DatagramPacket(this.buffer, this.buffer.length, this.packet.getAddress(), this.packet.getPort());
        this.client.receive(p);
        return new String(p.getData());
    }

    public static void main(String[] args) throws IOException
    {
        String serverHost = "127.0.0.1";
        int port = 10000;
        Client client = new Client(serverHost, port, "client说:服务器你好!".getBytes());
        client.send();
        //String info = client.receive(serverHost, port);
        System.out.println("客户端接收到:" + client.receive2());
    }

}
时间: 2024-08-27 15:43:02

UDP通信例子的相关文章

Linux UDP通信例子

UDP C/S编程的步骤如下图所示 ////server.c #include <sys/types.h> #include <sys/socket.h> #include<pthread.h> #include <netinet/in.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int ma

[C语言]一个很实用的服务端和客户端进行UDP通信的实例

前段时间发了个TCP通信的例子,现在再来一个UDP通信的例子.这些可以作为样本程序,用到开发中.“裸写”socket老是记不住步骤,经常被鄙视…… 下面的例子很简单,写一个UDP的server用于收包,写一个UDP的client用于发包并接收来自server的回复.其中UDP的client写了两个,一个是不需要connect的,另一个是带上connect的,两个client实现的功能是一样的.从效率上,带上connect的UDP肯定效率稍微高一些.不过UDP的connect和TCP里面非常不一样

QT之UDP通信

前言:前一篇讲了TCP通信,这篇来看看UDP通信. 这里说明一下,UDP通信中分为三种通信分别为单播.组播和广播,下面将一一为大家介绍. 同样的我们都需要在工程文件中添加network QT += core gui network 进行UDP通信需要用到的头文件 #include <QUdpSocket> 这里我们把UDP通信分为两个部分写,一个是发送端,另一个是接收端,而发送端中又分为单播.组播和广播三种形式,下面我们先来看看写发送端的代码程序的步骤: 发送端Udpsend的代码: 1.单播

等待唤醒机制,UDP通信和TCP通信

等待唤醒机制 通过等待唤醒机制使各个线程能有效的利用资源. 等待唤醒机制所涉及到的方法: wait() :等待,将正在执行的线程释放其执行资格 和 执行权,并存储到线程池中. notify():唤醒,唤醒线程池中被wait()的线程,一次唤醒一个,而且是任意的. notifyAll(): 唤醒全部:可以将线程池中的所有wait() 线程都唤醒. 所谓唤醒的意思就是让 线程池中的线程具备执行资格. 必须注意的是:这些方法都是在 同步中才有效: 同时这些方法在使用时必须标明所属锁,这样才可以明确出这

UDP通信

UDP通信的实体都是对等的. Server可以绑定端口,client实际上也可以绑定端口,如果不绑定端口,系统给socket随机关联一个端口. Client也可以通过Connect建立和server的连接. 例如: client绑定1900,server绑定1500 udp 0 0 0.0.0.0:1500 0.0.0.0:* udp 0 0 127.0.0.1:1900 127.0.0.1:1500 ESTABLISHED

wince 6.0下UDP通信需要注意MAC地址

最近在wince6.0下进行网络通信,在ARM下使用UDP通信协议.当然了,首先按照自己的使用配置wince中的IP,修改注册表即可. 我是wince的菜鸟,但是绝不是使用UDP通信的新手,在windows下跑过多次的UDP发送端和接收端,在wince下却怎么都不能像在windows下使用那么顺利,出现了不可理解的现象: (1)wince和wince相互通信,发送成功了,可是接收端却没有收到数据包: (2)wince和windows相互通信,发送和接收都正常: (3)wince和windows互

HP-SOCKET TCP/UDP通信框架库解析

项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功能,供上层应用直接简单使用的接口实现:而对于数据包完整性和协议解析等未处理, 也就意味着需要应用层自己处理一些数据包构造或解析等操作: 事实上目前只能支持windows平台: 1. 对于TCP通信模式下:服务器端和Agent均采用的是异步IO模型中的完成端口模型,客户端采用的是就绪IO通告模型中的W

android udp通信(应用层与底层硬件的通信)

背景:最近项目用到一块工控板,板子硬件与上位机通过udp方式进行通信,但厂家只提供了c#的demo,并将相应的驱动命令封装为dll动态库.另一项目小组希望在android平台下也能驱动这块工控板,我之前写过一些底层的驱动,但都收通过串口来传输的,通过网络进行数据通信的还是头一次接触.简单地看了下硬件的通信协议,还好,不算很复杂,每条命令只有20个字节.于是开始了解在android下如何实现Udp通信,现积累如下. what? 字面意思:UDP的全称是 User Datagram Protocol

JAVA网络编程--UDP通信

首先网络传输数据需了解例如以下三点 1.找到对方IP 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序用数字进行了标识.为了方便称呼这个数字,叫做port,逻辑port 3.  定义通信规则.这个通信规则称为协议. 国际组织定义了通用协议TCP/IP. 127.0.0.1本机回环地址 不易记忆,可用主机名 主机名:localhost 0-65535port范围 0-1024系统使用或保留port .当中mysql的port号为 3306 一.UDP UDP相对于