從零開始學golang之udp
package main
import (
"fmt"
"net"
)
/**
UDP是無連結! UDP是無連結! UDP是無連結!
DialUDP 是 pre-connected 其實是維持了一個傳送地址
ListenUDP 是 unconnect
如果*UDPConn是connected,讀寫方法是Read和Write。
如果*UDPConn是unconnected,讀寫方法是ReadFromUDP和WriteToUDP(以及ReadFrom和WriteTo)。
如果使用dail
你將失去SetKeepAlive或TCPConn和UDPConn的SetReadBuffer 這些函式, 除非做型別轉換
*/
func main() {
var wait string
Dc()
fmt.Scanln(&wait)
}
func Dc() {
var raddr *net.UDPAddr
raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9123")
conn, err := net.DialUDP("udp", nil, raddr)
if err != nil {
fmt.Println(err.Error())
}
_, err = conn.Write([]byte("ARE-U-THERE"))
if err != nil {
fmt.Println(err.Error())
}
var buf [1500]byte
rlen, err := conn.Read(buf[0:])
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(string(buf[0:rlen]))
}
func Ds() {
var laddr *net.UDPAddr
laddr, err := net.ResolveUDPAddr("udp", ":9123")
conn, err := net.ListenUDP("udp", laddr)
if err != nil {
fmt.Println(err.Error())
}
go func(conn *net.UDPConn) {
var rbuf [1500]byte
for {
rlen, raddr, err := conn.ReadFromUDP(rbuf[0:])
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(string(rbuf[0:rlen]))
conn.WriteToUDP([]byte("I-AM-HERE"), raddr)
}
}(conn)
}
所有程式碼地址
相關文章
- 從零開始學golang之 PrimGolang
- 從零開始學golang之TCPGolangTCP
- 從零開始學golang之DijkstraGolang
- 從零開始學golang之gin加上gormGolangORM
- 從零開始學golang之Dynamic programming --LCSGolang
- 從零開始學golang之圖-鄰接矩陣Golang矩陣
- 從零開始學golang之RedBlackTree-DeleteGolangdelete
- 從零開始學YC-Framework之鑑權Framework
- 從零開始學習C++之遞推C++
- 從零開始學習KafkaKafka
- 從零開始學習機器學習機器學習
- 【ROS】從零開始學ROSROS
- 從零開始學習laravelLaravel
- 從零開始學PythonPython
- 從零開始學 Python 之基礎語法Python
- 從零開始netty學習筆記之BIONetty筆記
- 從零開始netty學習筆記之protobufNetty筆記
- 從零開始學 Spring BootSpring Boot
- eclipse學習從零開始Eclipse
- 從零開始搭建 gRPC 服務 – Golang 篇(一)RPCGolang
- 從零開始搭建 gRPC 服務 - Golang 篇(二)RPCGolang
- 從零開始學習C++之if判斷語句C++
- ORACLE從零開始系列之SQL(一)OracleSQL
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(三)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學習 Go ——安裝Go
- 從零開始學C語言pdfC語言
- 【從零開始學爬蟲】建立模板爬蟲
- 從零開始學mitmproxy抓包工具MIT
- 從零開始學java(五)運算子Java
- 30天從零開始學習SwiftSwift
- 從零開始學五筆(一):概述
- 從零開始學習C++(0)C++