【Java学习笔记】UDP客户端/服务器端

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 客户端: import java.net.DatagramPacket; import java.

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

客户端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.io.IOException;
public class UdpClient {
    public static void main(String arg[]) {
        String outstr;
        if(arg.length >= 1)
            outstr = arg[0];
        else
            outstr = "count";
        try {
            DatagramSocket socket = new DatagramSocket();
            byte outblock[] = outstr.getBytes();
            InetAddress address = InetAddress.getLocalHost();
            DatagramPacket outpacket =
                    new DatagramPacket(outblock,outblock.length,address,8765);
            socket.send(outpacket);
            System.out.println("Client sent: " + outstr);
            byte inblock[] = new byte[256];
            DatagramPacket inpacket =
                    new DatagramPacket(inblock,inblock.length);
            socket.receive(inpacket);
            String instr = new String(inpacket.getData(),0,inpacket.getLength());
            System.out.println("Client got: " + instr);
            socket.close();
        } catch(SocketException e) {
            System.out.println(e);
        } catch(UnknownHostException e) {
            System.out.println(e);
        } catch(IOException e) {
            System.out.println(e);
        }
    }
}

服务器端:

import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.io.IOException;
import java.util.Date;
public class UdpServer {
    public static void main(String arg[]) {
        DatagramSocket socket = null;
        int count = 0;
        try {
            socket = new DatagramSocket(8765);
        } catch(IOException e) {
            System.out.println(e);
        }
        while(true) {
            try {
                byte block[] = new byte[256];
                DatagramPacket inpacket
                        = new DatagramPacket(block,block.length);
socket.receive(inpacket);
                int length = inpacket.getLength();
                System.out.println("Length of the data received: " + length);
   byte inblock[] = inpacket.getData();
                String inmsg = new String(inblock,0,length);
                System.out.println("Server got: " + inmsg);
                count++;
                String outmsg;
                if(inmsg.equals("date")) {
                    Date date = new Date();
                    outmsg = date.toString();
                } else if(inmsg.equals("halt")) {
                    socket.close();
                    return;
                } else if(inmsg.equals("count")) {
                    outmsg = "Number of messages: " + count;
                } else {
                    outmsg = "What is " + inmsg + "?";
                }
                byte outblock[] = outmsg.getBytes();
                InetAddress returnaddress = inpacket.getAddress();
                int returnport = inpacket.getPort();
                DatagramPacket outpacket = new DatagramPacket(
                        outblock,outblock.length,returnaddress,returnport);
                socket.send(outpacket);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
1月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
45 4
|
27天前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
43 0
|
3月前
|
JSON NoSQL Java
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
这篇文章介绍了在Java中使用Redis客户端的几种方法,包括Jedis、SpringDataRedis和SpringBoot整合Redis的操作。文章详细解释了Jedis的基本使用步骤,Jedis连接池的创建和使用,以及在SpringBoot项目中如何配置和使用RedisTemplate和StringRedisTemplate。此外,还探讨了RedisTemplate序列化的两种实践方案,包括默认的JDK序列化和自定义的JSON序列化,以及StringRedisTemplate的使用,它要求键和值都必须是String类型。
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
68 1
|
2月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
58 2
|
2月前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
80 1
|
2月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
43 0
|
2月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
40 0
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
3月前
|
网络协议
最简单的tcp客户端和服务端 还有udp
最简单的tcp客户端和服务端 还有udp