【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,如需转载请自行联系原作者

相关文章
|
8月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
433 5
|
11月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
212 13
|
5月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
5月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
11月前
|
Java Linux 定位技术
Minecraft配置文件参数说明(JAVA服务器篇)
Minecraft JAVA版服务器启动后会生成server.properties配置文件,位于minecraft_server/根目录下。该文件包含多项关键设置,如游戏模式(gamemode)、最大玩家数(max-players)、难度(difficulty)等。此文档详细说明了各配置项的功能与默认值,帮助用户高效管理服务器环境。
2590 60
|
11月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
10月前
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
2271 5
|
11月前
|
网络协议 开发者 Python
Socket如何实现客户端和服务器间的通信
通过上述示例,展示了如何使用Python的Socket模块实现基本的客户端和服务器间的通信。Socket提供了一种简单且强大的方式来建立和管理网络连接,适用于各种网络编程应用。理解和掌握Socket编程,可以帮助开发者构建高效、稳定的网络应用程序。
584 10
|
11月前
|
开发框架 Java 开发工具
【Java全栈学习笔记-U1-day01】Java介绍
本笔记整理了Java学习的基础内容,涵盖程序理解、Java语言特性、JDK安装与配置、Java程序开发工具及编写步骤。重点介绍了Java程序的基本结构、编译和运行过程,以及输出语句的使用。通过实例演示了IDEA创建Java程序的方法,并强调了编码规范和注意事项。适合初学者复习和交流学习。 主要内容: 1. 理解程序:计算机组成、程序定义。 2. 简介:Java语言特点、技术平台、JDK作用。 3. 编写Java程序:编写、编译、运行步骤,基本结构。 4. 输出语句 5. DEA使用:新建工程、保存位置、文件介绍、新建类。 6. 扩展:注释、代码规范、大小写敏感、缩进等。
|
4月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
355 10