【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 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
15天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
13 3
|
23天前
|
Java
Java使用FileInputStream&&FileOutputStream模拟客户端向服务器端上传文件(单线程)
Java使用FileInputStream&&FileOutputStream模拟客户端向服务器端上传文件(单线程)
55 1
|
26天前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
17 2
|
26天前
|
网络协议 Java 应用服务中间件
Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作
本文探讨了后端开发中Web服务器的重要性,特别是Tomcat框架的地位与作用。通过解析Tomcat的内部机制,文章引导读者理解其复杂性,并提出了一种实践方式——手工构建简易Web服务器,以此加深对Web服务器运作原理的认识。文章还详细介绍了HTTP协议的工作流程,包括请求与响应的具体格式,并通过Socket编程在Java中的应用实例,展示了客户端与服务器间的数据交换过程。最后,通过一个简单的Java Web服务器实现案例,说明了如何处理HTTP请求及响应,强调虽然构建基本的Web服务器相对直接,但诸如Tomcat这样的成熟框架提供了更为丰富和必要的功能。
|
28天前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
29天前
|
JSON 前端开发 JavaScript
Web中的客户端和服务器端
Web中的客户端和服务器端
|
14天前
|
网络协议 C# 开发者
WPF与Socket编程的完美邂逅:打造流畅网络通信体验——从客户端到服务器端,手把手教你实现基于Socket的实时数据交换
【8月更文挑战第31天】网络通信在现代应用中至关重要,Socket编程作为其实现基础,即便在主要用于桌面应用的Windows Presentation Foundation(WPF)中也发挥着重要作用。本文通过最佳实践,详细介绍如何在WPF应用中利用Socket实现网络通信,包括创建WPF项目、设计用户界面、实现Socket通信逻辑及搭建简单服务器端的全过程。具体步骤涵盖从UI设计到前后端交互的各个环节,并附有详尽示例代码,助力WPF开发者掌握这一关键技术,拓展应用程序的功能与实用性。
36 0
|
14天前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
45 0
|
15天前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
14 0
|
20天前
|
存储 网络协议 物联网
网络中的“客户端”和“服务器
【8月更文挑战第24天】
30 0