UDPソケットに基づいた囲碁のプログラミング言語---

ゴー言語 - 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を使用して

まず、サーバーを実行し、クライアントを実行

ここに画像を挿入説明

デフォルトでは、メッセージを送信するために、クライアントを実行します

ここに画像を挿入説明

サーバーは、受信します

ここに画像を挿入説明

感謝

ユニバーサルネットワーク

そして、自分の勤勉

彼は199元の記事を発表 ウォンの賞賛531 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_45163122/article/details/105119435