`
kingxss
  • 浏览: 973600 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Socket学习笔记(二)- UDP基本使用

阅读更多

一.服务端代码:

import java.io.*;
import java.net.*;

public class UDPEchoServer {

    private static final int ECHOMAX = 255; // Maximum size of echo datagram

    public static void main(String[] args) throws IOException {

        int servPort = 5500; // Server port

        DatagramSocket socket = new DatagramSocket(servPort);
        DatagramPacket packet = new DatagramPacket(new byte[ECHOMAX], ECHOMAX);

        while (true) { // Run forever, receiving and echoing datagrams
            socket.receive(packet); // Receive packet from client
            System.out.println("Handling client at " + packet.getAddress().getHostAddress() + " on port "  + packet.getPort());
            socket.send(packet); // Send the same packet back to client
            packet.setLength(ECHOMAX); // Reset length to avoid shrinking buffer
        }
        /* NOT REACHED */
    }
}

 

二.客户端代码:

import java.net.*;
import java.io.*;

public class UDPEchoClientTimeout {

    private static final int TIMEOUT = 3000; // Resend timeout (milliseconds)
    private static final int MAXTRIES = 5; // Maximum retransmissions

    public static void main(String[] args) throws IOException {
        InetAddress serverAddress = InetAddress.getByName("127.0.0.1"); // Server address
        int servPort = 5500; // Server port
        // Convert the argument String to bytes using the default encoding
        byte[] bytesToSend = "Hi, World".getBytes();

        DatagramSocket socket = new DatagramSocket();
        socket.setSoTimeout(TIMEOUT); // Maximum receive blocking time(milliseconds)
        // Sending packet
        DatagramPacket sendPacket = new DatagramPacket(bytesToSend, bytesToSend.length, serverAddress, servPort);

        DatagramPacket receivePacket = // Receiving packet
        new DatagramPacket(new byte[bytesToSend.length], bytesToSend.length);

        int tries = 0; // Packets may be lost, so we have to keep trying
        boolean receivedResponse = false;
        do {
            socket.send(sendPacket); // Send the echo string
            try {
                socket.receive(receivePacket); // Attempt echo reply reception

                if (!receivePacket.getAddress().equals(serverAddress)) {// Check
                                                                        // source
                    throw new IOException("Received packet from an unknown source");
                }
                receivedResponse = true;
            } catch (InterruptedIOException e) { // We did not get anything
                tries += 1;
                System.out.println("Timed out, " + (MAXTRIES - tries) + " more tries...");
            }
        } while ((!receivedResponse) && (tries < MAXTRIES));

        if (receivedResponse) {
            System.out.println("Received: " + new String(receivePacket.getData()));
        } else {
            System.out.println("No response -- giving up.");
        }
        socket.close();
    }
}

 

     上述代码的UDP服务端是单线程,一次只能服务一个客户端。

 

 

参考:

1.《Java TCP/IP Socket编程(原书第2版)》

分享到:
评论

相关推荐

    java学习笔记-Scokect.pdf

    Java学习笔记-Scoket.pdf是关于Java编程语言中Socket编程的学习笔记,涵盖了Socket编程的基础知识、Java中Socket的使用、Socket通信的原理及应用等方面的内容。 Socket编程的基础知识 在Java编程语言中,Socket是...

    android学习笔记4--socket

    本文将主要探讨基于Java的Socket编程,包括TCP和UDP协议的使用。 首先,让我们了解一下Socket的基本通信模型。Socket,通常被称为套接字,是网络通信中的一个端点,它允许两台计算机通过网络进行数据交换。在TCP/IP...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    Java学习笔记(源码)

    3. **异常处理**:Java的异常处理机制是其强大的特性之一,学习笔记会讲解如何使用try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。 4. **集合框架**:Java集合框架是存储和操作对象的重要工具,...

    java学习笔记 初学者必读

    2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}”、“ ” 3-5 3.3. 标识符 3-5 3.4. 数据类型 3-6 3.5. 命名规则 3-6 4. 三•表达式和控制流 4-6 ...

    java校招学习笔记

    "java校招学习笔记"显然是针对应届毕业生或求职者准备的,旨在帮助他们掌握Java的基础知识和校招面试中常见的技术问题。这份笔记可能包含了从基础概念到进阶主题的全面概述,以提高求职者的竞争力。 首先,Java的...

    良葛格 Java 学习笔记-JavaGossip全(v1+v2)

    《良葛格 Java 学习笔记-JavaGossip全(v1+v2)》是一部集成了作者良葛格多年编程经验的学习资料,旨在帮助初学者和有经验的开发者深入理解和掌握Java这门强大的编程语言。这份笔记包含了JavaGossip的两个版本,v1和...

    java se学习笔记

    - **Socket编程**:TCP和UDP通信的基本原理,以及ServerSocket和Socket的使用。 - **URL与URLConnection**:HTTP请求的发送与接收。 9. **反射机制**: - **Class类**:获取类的信息,动态创建对象,调用方法等...

    良葛格Java学习笔记

    - **Socket通信**:TCP和UDP的基本原理,以及Socket和ServerSocket的使用。 - **HTTP协议**:发送HTTP请求和处理响应的方法。 9. **反射机制** - **Class类**:获取类的信息,创建对象,调用方法。 - **动态...

    Java专题学习笔记

    Java专题学习笔记主要涵盖了Java语言的核心概念、进阶特性以及实际应用中的问题解析。这份笔记是结合了讲师的讲解和个人的整理,旨在为热爱Java编程的朋友们提供丰富的学习资源。以下将详细介绍其中可能包含的知识点...

    java学习笔记-老师的课程笔记

    Java学习笔记是初学者探索Java编程世界的宝贵资源。这份由老师精心整理的课程笔记涵盖了Java的基础到进阶知识,旨在帮助新手快速理解并掌握这门强大的面向对象编程语言。笔记内容可能包括但不限于以下方面: 一、...

    Socket网络编程学习笔记.zip

    "TCP_UDP_Socket学习笔记.md" 文件很可能会详细阐述这些概念,包括如何创建和使用Socket对象,如何处理连接和数据传输,以及在实际应用中的注意事项。此外,笔记可能还会包含实例代码,帮助初学者更好地理解和实践...

    Java学习笔记全部课件和源代码

    "Java学习笔记全部课件和源代码"是一个针对初学者的资源包,它包含了一系列关于Java编程的学习材料和实例代码,旨在帮助新手快速掌握Java语言的基础和实践应用。 在Java学习的初期,理解基础概念至关重要。这包括...

    java面试题 学习笔记

    Java面试题及学习笔记概述 Java作为一种广泛应用的编程语言,其面试题库广泛且深入,涵盖了从基础语法到高级特性的各个层面。本篇将基于常见的Java面试问题,结合学习笔记,深入探讨Java的核心概念和技术。 一、...

    Java公司培训经典学习笔记

    Java公司培训经典学习笔记是针对Java编程语言进行深入学习的一份宝贵资料,涵盖了从基础到高级的诸多知识点,旨在帮助开发者提升技能,适应企业级项目开发的需求。以下将详细阐述这些笔记中的关键点: 1. **Java...

    java学习笔记markdown

    Java学习笔记Markdown版包含了多个章节,涵盖了Java编程的多个核心概念。这些笔记是学习Java时进行知识总结的理想资源,尤其适合初学者或正在巩固基础知识的开发者。以下是对这些笔记内容的详细解读: 1. **继承** ...

    Socket TCP Java 高清学习资料合集

    包括 1.TCP-IP详解卷1:协议 中文版PDF 2.高级TCP/IP编程 中文版PDF 3.TCPIP Sockets in Java 2nd 英文版PDF, 4.Advanced JAVA networking英文版PDF ...5.中文版Socket Java教程 6.Socket Java学习笔记 7.UDP简单案例

    Java入门学习笔记

    ### Java入门学习笔记 #### 一、Java特点与运行原理 **1.1 Java特点** - **简单性:** Java的设计使得它易于学习且避免了许多传统编程语言中存在的复杂性。 - **面向对象:** Java是一种纯面向对象的语言,支持...

    java笔记 java笔记

    - **简单性**:Java语言设计简洁明了,易于学习和使用。 - **健壮性**:Java拥有严格的错误检测机制,有助于开发健壮的应用程序。 #### 1.2 运行原理 Java程序的运行分为几个阶段: 1. **编写**:使用文本编辑器...

    java学习笔记之大鹏JAVA终级总结

    Java学习笔记之大鹏JAVA终级总结,是针对Java编程语言深入学习和面试准备的一份综合资料。这份总结涵盖了从基础知识到高级概念的多个方面,旨在帮助初学者理解和掌握Java的核心概念,同时解决面试中可能出现的关键...

Global site tag (gtag.js) - Google Analytics