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

简介:

客户端:

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/archive/2012/12/17/2822298.html,如需转载请自行联系原作者

相关文章
|
9月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
496 5
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
237 13
|
6月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
6月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
10月前
|
人工智能 Java API
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
13270 33
MCP客户端调用看这一篇就够了(Java版)
|
10月前
|
存储 网络协议 Java
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
658 25
|
开发框架 Java 开发工具
【Java全栈学习笔记-U1-day01】Java介绍
本笔记整理了Java学习的基础内容,涵盖程序理解、Java语言特性、JDK安装与配置、Java程序开发工具及编写步骤。重点介绍了Java程序的基本结构、编译和运行过程,以及输出语句的使用。通过实例演示了IDEA创建Java程序的方法,并强调了编码规范和注意事项。适合初学者复习和交流学习。 主要内容: 1. 理解程序:计算机组成、程序定义。 2. 简介:Java语言特点、技术平台、JDK作用。 3. 编写Java程序:编写、编译、运行步骤,基本结构。 4. 输出语句 5. DEA使用:新建工程、保存位置、文件介绍、新建类。 6. 扩展:注释、代码规范、大小写敏感、缩进等。
|
网络协议 Java API
【JavaEE】——Udp翻译器的实现(回显服务器)
网络编程,DatagramSocket 和 DatagramPacket类,回显服务器,服务器实现,客户端实现,
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
468 10