csjiabin's blog csjiabin's blog
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

csjiabin

前端界的小菜鸟
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • comments
  • printing
  • logging
  • variables
  • interpolation
  • types
  • type check
  • if/else
  • for
  • while
  • switch
  • arrays
  • uint8 arrays
  • array iteration
  • array sorting
  • buffers
  • maps
  • objects
  • functions
  • default values
  • destructuring
  • spread operator
  • rest operator
  • swapping
  • classes
  • generators
  • datetime
  • timeout
  • interval
  • IIFE
  • files
  • json
  • big numbers
  • promises
  • async await
  • streams
  • event emitter
  • errors
  • try/catch
  • exceptions
  • regex
  • exec
  • tcp server
  • udp server
    • http server
    • url parse
    • gzip
    • dns
    • crypto
    • env vars
    • cli args
    • cli flags
    • stdout
    • stderr
    • stdin
    • modules
    • stack trace
    • databases
    • testing
    • benchmarking
    • documentation
    • 《面向Nodejs开发者的Go》
    miguelmota
    2022-09-29
    目录

    udp server

    # Node.js

    const dgram = require("dgram");
    const server = dgram.createSocket("udp4");
    
    server.on("error", (err) => {
      console.error(err);
      server.close();
    });
    
    server.on("message", (msg, rinfo) => {
      const data = msg.toString("utf8").trim();
      console.log(`received: ${data} from ${rinfo.address}:${rinfo.port}`);
    });
    
    server.on("listening", () => {
      const address = server.address();
      console.log(`server listening ${address.address}:${address.port}`);
    });
    
    server.bind(3000);
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    Output

    $ echo 'hello world' > /dev/udp/0.0.0.0/3000
    
    server listening 0.0.0.0:3000
    received: hello world from 127.0.0.1:51452
    
    1
    2
    3
    4

    # Go

    package main
    
    import (
    	"fmt"
    	"net"
    	"strings"
    )
    
    func main() {
    	conn, err := net.ListenUDP("udp", &net.UDPAddr{
    		Port: 3000,
    		IP:   net.ParseIP("0.0.0.0"),
    	})
    	if err != nil {
    		panic(err)
    	}
    
    	defer conn.Close()
    	fmt.Printf("server listening %s\n", conn.LocalAddr().String())
    
    	for {
    		message := make([]byte, 20)
    		rlen, remote, err := conn.ReadFromUDP(message[:])
    		if err != nil {
    			panic(err)
    		}
    
    		data := strings.TrimSpace(string(message[:rlen]))
    		fmt.Printf("received: %s from %s\n", data, remote)
    	}
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31

    Output

    $ echo 'hello world' > /dev/udp/0.0.0.0/3000
    
    server listening [::]:3000
    received: hello world from 127.0.0.1:50275
    
    1
    2
    3
    4

    ⬆ back to top

    编辑 (opens new window)
    #Go#Node.js
    上次更新: 2022/09/30, 11:34:22
    tcp server
    http server

    ← tcp server http server→

    最近更新
    01
    咖啡知识
    10-13
    02
    documentation
    09-29
    03
    benchmarking
    09-29
    更多文章>
    Theme by Vdoing | Copyright © 2018-2022 csjiabin | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式