国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器

這篇具有很好參考價(jià)值的文章主要介紹了Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


UDP 服務(wù)端

package network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpEchoServer {
    private DatagramSocket socket = null;

    // 參數(shù)是服務(wù)器要綁定的端口號(hào)
    public UdpEchoServer(int port) throws SocketException {
        socket = new DatagramSocket(port);
    }

    // 使用此方法啟動(dòng)服務(wù)器
    public void start() throws IOException {
        System.out.println("服務(wù)器啟動(dòng)!");
        while (true) {
            // 反復(fù)的, 長(zhǎng)期的執(zhí)行針對(duì)客戶端請(qǐng)求處理的邏輯.
            // 一個(gè)服務(wù)器, 運(yùn)行過程中, 要做的事情, 主要是三個(gè)核心環(huán)節(jié).
            // 1. 讀取請(qǐng)求, 并解析
            DatagramPacket requestPacket = new DatagramPacket(new byte[4096], 4096);
            socket.receive(requestPacket);
            //    這樣的轉(zhuǎn)字符串的前提是, 后續(xù)客戶端發(fā)的數(shù)據(jù)就是一個(gè)文本的字符串.
            String request = new String(requestPacket.getData(), 0, requestPacket.getLength());
            // 2. 根據(jù)請(qǐng)求, 計(jì)算出響應(yīng)
            String response = process(request);
            // 3. 把響應(yīng)寫回給客戶端
            //    此時(shí)需要告知網(wǎng)卡, 要發(fā)的內(nèi)容是啥, 要發(fā)給誰(shuí).
            DatagramPacket responsePacket = new DatagramPacket(response.getBytes(), response.getBytes().length,
                    requestPacket.getSocketAddress());
            socket.send(responsePacket);
            // 記錄日志, 方便觀察程序執(zhí)行效果.
            System.out.printf("[%s:%d] req: %s, resp: %s\n", requestPacket.getAddress().toString(), requestPacket.getPort(),
                    request, response);
        }
    }

    public String process(String request) {
        return request;
    }

    public static void main(String[] args) throws IOException {
        UdpEchoServer server = new UdpEchoServer(9090);
        server.start();
    }
}

UDP 客戶端

package network;


import java.io.IOException;
import java.net.*;
import java.util.Scanner;

// UDP 的回顯服務(wù)器
// 客服端發(fā)的請(qǐng)求是什么, 服務(wù)器返回的響應(yīng)就是什么
public class UdpEchoClient {
    private DatagramSocket socket = null;
    private String serverIp;
    private int serverPort;

    public UdpEchoClient(String ip, int port) throws SocketException {
        this.serverIp = ip;
        this.serverPort = port;
        socket = new DatagramSocket();
    }

    // 讓這個(gè)客戶端反復(fù)的從控制臺(tái)讀取用戶輸入的內(nèi)容.
    // 把這個(gè)內(nèi)容構(gòu)造成 UDP 請(qǐng)求, 發(fā)給服務(wù)器. 再讀取服務(wù)器返回的 UDP 響應(yīng)
    // 最終再顯示在客戶端的屏幕上.
    public void start() throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("客戶端啟動(dòng)!");

        while (true) {
            // 1. 從控制臺(tái)讀取用戶輸入的內(nèi)容
            System.out.print("-> "); // 命令提示符, 提示用戶要輸入字符串.
            String request = scanner.next();
            // 2. 構(gòu)造請(qǐng)求對(duì)象, 并發(fā)給服務(wù)器.
            DatagramPacket requestPacket = new DatagramPacket(request.getBytes(), request.getBytes().length,
                    InetAddress.getByName(serverIp), serverPort);
            socket.send(requestPacket);
            // 3. 讀取服務(wù)器的響應(yīng), 并解析出響應(yīng)內(nèi)容.
            DatagramPacket responsePacket = new DatagramPacket(new byte[4096], 4096);
            socket.receive(responsePacket);
            String response = new String(responsePacket.getData(), 0, responsePacket.getLength());
            // 4. 顯示到屏幕上.
            System.out.println(response);
        }
    }

    public static void main(String[] args) throws IOException {
        UdpEchoClient client = new UdpEchoClient("127.0.0.1", 9090);
        client.start();
    }
}

實(shí)現(xiàn)效果

Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器,網(wǎng)絡(luò)學(xué)習(xí)之路,java,udp,服務(wù)器
Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器,網(wǎng)絡(luò)學(xué)習(xí)之路,java,udp,服務(wù)器

UDP 服務(wù)端(實(shí)現(xiàn)字典功能)

只需要繼承自之前寫的服務(wù)端, 然后重寫父類 process 方法即可. 添加一些查詢字典的邏輯.

package network;

import java.io.IOException;
import java.net.SocketException;
import java.util.HashMap;
import java.util.Map;

public class UdpDictServer extends UdpEchoServer {
    private Map<String, String> dict = new HashMap<>();

    public UdpDictServer(int port) throws SocketException {
        super(port);

        dict.put("cat", "小貓");
        dict.put("dog", "小狗");
        dict.put("hello", "你好");
    }

    @Override
    public String process(String request) {
        return dict.getOrDefault(request, "該詞沒有查詢到!");
    }

    public static void main(String[] args) throws IOException {
        UdpDictServer server = new UdpDictServer(9090);
        server.start();
    }
}

效果

Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器,網(wǎng)絡(luò)學(xué)習(xí)之路,java,udp,服務(wù)器
Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器,網(wǎng)絡(luò)學(xué)習(xí)之路,java,udp,服務(wù)器


總結(jié)

? 本文記錄了一個(gè)簡(jiǎn)單的 UDP 回顯服務(wù)器代碼.
? 想了解更多計(jì)算機(jī)網(wǎng)絡(luò)的知識(shí), 可以收藏一下本人的計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)專欄, 里面會(huì)持續(xù)更新本人的學(xué)習(xí)記錄, 跟隨我一起不斷學(xué)習(xí).
? 感謝你們的耐心閱讀, 博主本人也是一名學(xué)生, 也還有需要很多學(xué)習(xí)的東西. 寫這篇文章是以本人所學(xué)內(nèi)容為基礎(chǔ), 日后也會(huì)不斷更新自己的學(xué)習(xí)記錄, 我們一起努力進(jìn)步, 變得優(yōu)秀, 小小菜鳥, 也能有大大夢(mèng)想, 關(guān)注我, 一起學(xué)習(xí).

再次感謝你們的閱讀, 你們的鼓勵(lì)是我創(chuàng)作的最大動(dòng)力!!!!!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-831794.html

到了這里,關(guān)于Java 簡(jiǎn)單實(shí)現(xiàn)一個(gè) UDP 回顯服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaEE & UDP簡(jiǎn)易翻譯服務(wù)器 & 網(wǎng)絡(luò)編程示例2 & CTP回顯服務(wù)器,回顯客戶端

    JavaEE & UDP簡(jiǎn)易翻譯服務(wù)器 & 網(wǎng)絡(luò)編程示例2 & CTP回顯服務(wù)器,回顯客戶端

    禁止白嫖 T T 點(diǎn)點(diǎn)贊唄 這個(gè)翻譯器主要是在上一章的回顯服務(wù)器和回顯客戶端上進(jìn)行修改 修改了計(jì)算響應(yīng)的過程, 即process方法 1.1 重寫方法 重寫方法是Java中的一種重要手段 指在一個(gè)類的子類里,對(duì)父類的一個(gè)方法進(jìn)行重新定義! 而父類的權(quán)限級(jí)別要大于等于子類~ 【除了

    2023年04月16日
    瀏覽(47)
  • JavaEE & UDP簡(jiǎn)易翻譯服務(wù)器 & 網(wǎng)絡(luò)編程示例2 & TCP回顯服務(wù)器,回顯客戶端

    JavaEE & UDP簡(jiǎn)易翻譯服務(wù)器 & 網(wǎng)絡(luò)編程示例2 & TCP回顯服務(wù)器,回顯客戶端

    禁止白嫖 T T 點(diǎn)點(diǎn)贊唄 這個(gè)翻譯器主要是在上一章的回顯服務(wù)器和回顯客戶端上進(jìn)行修改 修改了計(jì)算響應(yīng)的過程, 即process方法 1.1 重寫方法 重寫方法是Java中的一種重要手段 指在一個(gè)類的子類里,對(duì)父類的一個(gè)方法進(jìn)行重新定義! 而父類的權(quán)限級(jí)別要大于等于子類~ 【除了

    2023年04月16日
    瀏覽(20)
  • [網(wǎng)絡(luò)編程]UDP協(xié)議,基于UDP協(xié)議的回顯服務(wù)器

    [網(wǎng)絡(luò)編程]UDP協(xié)議,基于UDP協(xié)議的回顯服務(wù)器

    目錄 1.UDP協(xié)議介紹 2.UDP協(xié)議在Java中的類 2.1DatagramSocket類 2.2DatagramPacket 3.回顯服務(wù)器 3.1Sever端? 3.2Client端 ? UDP協(xié)議是一種網(wǎng)絡(luò)協(xié)議,它是無(wú)連接的,全雙工,并且是面向數(shù)據(jù)報(bào),不可靠的一種協(xié)議。 常用于在線視頻播放,游戲這種實(shí)時(shí)性要求比較高的應(yīng)用。或者無(wú)需可靠傳輸

    2024年01月22日
    瀏覽(31)
  • 【網(wǎng)絡(luò)】UDP網(wǎng)絡(luò)服務(wù)器簡(jiǎn)單模擬實(shí)現(xiàn)

    【網(wǎng)絡(luò)】UDP網(wǎng)絡(luò)服務(wù)器簡(jiǎn)單模擬實(shí)現(xiàn)

    【網(wǎng)絡(luò)】UDP網(wǎng)絡(luò)服務(wù)器簡(jiǎn)單模擬實(shí)現(xiàn) UDP的封裝 : UDP網(wǎng)絡(luò)服務(wù)器模擬實(shí)現(xiàn):主要分為makefile文件進(jìn)行編譯 UDP客戶端 :udpClient.cc(客戶端的調(diào)用),udpClient.hpp(客戶端的實(shí)現(xiàn)) UDP服務(wù)端 :udpServer.cc(服務(wù)端的調(diào)用),udpServer.hpp(服務(wù)端的實(shí)現(xiàn)) 創(chuàng)建makefile文件: makefile里可以定義變

    2024年02月08日
    瀏覽(31)
  • 網(wǎng)絡(luò)編程套接字(二)之UDP服務(wù)器簡(jiǎn)單實(shí)現(xiàn)

    網(wǎng)絡(luò)編程套接字(二)之UDP服務(wù)器簡(jiǎn)單實(shí)現(xiàn)

    目錄 一、服務(wù)端UdpServer 1、udp_server.hpp 1、服務(wù)器的初始化 2、服務(wù)器的運(yùn)行 2、udp_server.cc 二、客戶端UdpClient udp_client.cc 三、完整代碼 首先,我們?cè)谠撐募?,將服?wù)器封裝成一個(gè)類,而作為一款服務(wù)器,必須要有自己的端口號(hào),同時(shí)網(wǎng)絡(luò)服務(wù)器需要有對(duì)應(yīng)的IP地址,文件描述

    2024年04月16日
    瀏覽(20)
  • 用Java包c(diǎn)om.sun.net.httpserver下面的類實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http服務(wù)器demo

    用Java包c(diǎn)om.sun.net.httpserver下面的類實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http服務(wù)器demo

    java的com.sun.net.httpserver包下的類提供了一個(gè)高層級(jí)的http服務(wù)器API,可以用來(lái)構(gòu)建內(nèi)嵌的http服務(wù)器。支持http和https。這些API提供了一個(gè)RFC 2616 (HTTP 1.1)和RFC 2818 (HTTP over TLS)的部分實(shí)現(xiàn)。 https://docs.oracle.com/en/java/javase/19/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html 下面來(lái)實(shí)

    2024年02月07日
    瀏覽(22)
  • 使用Java服務(wù)器實(shí)現(xiàn)UDP消息的發(fā)送和接收(多線程)

    使用Java服務(wù)器實(shí)現(xiàn)UDP消息的發(fā)送和接收(多線程)

    在本篇博客中,我們將介紹如何使用Java服務(wù)器來(lái)實(shí)現(xiàn)UDP消息的發(fā)送和接收,并通過多線程的方式來(lái)處理并發(fā)請(qǐng)求。UDP(User Datagram Protocol)是一種無(wú)連接、不可靠的傳輸協(xié)議,適合于實(shí)時(shí)性要求高的應(yīng)用場(chǎng)景,如實(shí)時(shí)游戲、語(yǔ)音通信等。 步驟: 首先,我們需要導(dǎo)入Java提供的

    2024年02月12日
    瀏覽(37)
  • 基于 Python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 HTTP 服務(wù)器

    基于 Python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的 HTTP 服務(wù)器

    文章這個(gè)題目,讓我想起了大學(xué)時(shí)上《Unix 網(wǎng)絡(luò)編程》這門專業(yè)課的家庭作業(yè),題目幾乎一模一樣。 HTTP 服務(wù)器工作在服務(wù)端,主要功能包括處理來(lái)自客戶端的請(qǐng)求,管理網(wǎng)絡(luò)資源,以及生成和發(fā)送響應(yīng)給客戶端。在實(shí)際應(yīng)用中,HTTP 服務(wù)器不僅限于傳輸 HTML 文檔;它還可以傳

    2024年03月22日
    瀏覽(26)
  • 簡(jiǎn)單的Udp服務(wù)器

    2024年02月19日
    瀏覽(20)
  • C# Socket通信從入門到精通(15)——單個(gè)同步UDP服務(wù)器監(jiān)聽一個(gè)客戶端C#代碼實(shí)現(xiàn)

    C# Socket通信從入門到精通(15)——單個(gè)同步UDP服務(wù)器監(jiān)聽一個(gè)客戶端C#代碼實(shí)現(xiàn)

    我們?cè)陂_發(fā)UDP通信程序時(shí),除了開發(fā)UDP客戶端程序,有時(shí)候我們也需要開發(fā)UDP服務(wù)器程序,這在實(shí)際項(xiàng)目中是經(jīng)常會(huì)遇到的,所以說掌握UDP服務(wù)器程序的開發(fā)是一項(xiàng)必備的技能,尤其在上位機(jī)軟件開發(fā)領(lǐng)域,掌握UDP服務(wù)器程序的開發(fā)是走向高級(jí)工程師的必經(jīng)之路,也是面試必

    2024年02月03日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包