ゴー言語 - UDPソケットプログラミングに基づいて
ブログの説明
記事インターネットから関与し、個人的な結論を整理中の情報は、その個々の学習経験と要約を意味する、どのような侵害あれば、あなたに感謝し、削除するために私に連絡してください!
UDPはじめに
UDPプロトコル(ユーザ・データグラム・プロトコル)は、ユーザ・データグラム・プロトコルの中国名は、OSI(開放型システム間相互接続、開放型システム間相互接続)一方の参照モデルであるコネクションの接続を確立することなく、トランスポート層プロトコルとデータを直接送信することができますレセプションには、何の通信タイミング信頼できないではないが、リアルタイムのUDPプロトコルは、より良い一般的にライブ映像関連分野に使用されます。
サービス側の実装
package main
import (
"fmt"
"net"
)
func main(){
//监听udp
listen,err := net.ListenUDP("udp",&net.UDPAddr{
IP:net.IPv4(0,0,0,0),
Port: 1021,
})
if err != nil {
fmt.Println("监听失败,err:",err)
return
}
//关闭连接
defer listen.Close()
for {
var data [1024]byte
//读取
n, addr ,err := listen.ReadFromUDP(data[:])
if err != nil{
fmt.Println("读取失败,err:",err)
continue
}
fmt.Printf("接收的内容是:%v,来自地址:%v,字节数量:%v\n",string(data[:n]), addr, n)
//发送数据
_, err = listen.WriteToUDP(data[:n],addr)
if err != nil{
fmt.Println("发送失败,err:",err)
continue
}
}
}
クライアントの実装
package main
import (
"fmt"
"net"
)
func main(){
socket, err := net.DialUDP("udp",nil,&net.UDPAddr{
IP: net.IPv4(0,0,0,0) ,
Port: 1021,
})
if err != nil{
fmt.Println("连接失败,err:",err)
return
}
defer socket.Close();
sendData := []byte("你好,服务器")
//发送数据
_, err = socket.Write(sendData)
if err != nil{
fmt.Println("发送失败,err:",err)
return
}
//接受数据
data := make([]byte,4096)
n, remoteAddr, err := socket.ReadFromUDP(data)
if err != nil{
fmt.Println("接受失败,err:",err)
return
}
fmt.Printf("发送的信息:%v,目标地址:%v,字节数量:%v\n",string(data[:n]),remoteAddr,n)
}
テストをコンパイルします
golandを使用して
まず、サーバーを実行し、クライアントを実行
デフォルトでは、メッセージを送信するために、クライアントを実行します
サーバーは、受信します
感謝
ユニバーサルネットワーク
そして、自分の勤勉