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

websocket實現(xiàn)go(server)與c#(client)通訊

這篇具有很好參考價值的文章主要介紹了websocket實現(xiàn)go(server)與c#(client)通訊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

go 服務(wù)端

使用到github.com/gorilla/websocket

package main

import (
	"fmt"
	"github.com/gorilla/websocket"
	"log"
	"net/http"
)

func main() {
	var upgrader = websocket.Upgrader{
		ReadBufferSize:  1024,
		WriteBufferSize: 1024,
		CheckOrigin: func(r *http.Request) bool {
			return true //允許跨域
		},
	}
	http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { //將所有的請求轉(zhuǎn)換為websocket
		upgrader.CheckOrigin = func(r *http.Request) bool {
			return true
		}
		conn, err := upgrader.Upgrade(writer, request, nil)
		if err != nil {
			log.Fatal(err)
		}
		for {
			t, msg, err := conn.ReadMessage()
			if err != nil {
				fmt.Printf("read error:%v\n", err)
				break
			}
			fmt.Printf("[ws]recv count:%d recv:%s,msg type:%d\n", len(msg), string(msg), t)
		}
	})

	err := http.ListenAndServe("127.0.0.1:8081", nil)
	if err != nil {
		log.Fatal(err)
	}
}

C#客戶端

C#操作websocket當(dāng)客戶端使用時使用System.Net.Websockets這個命名空間下的ClientWebSocket
winform的設(shè)計界面如下:

websocket實現(xiàn)go(server)與c#(client)通訊,websocket,golang,c#
代碼如下:

public partial class Form1 : Form
    {
        CancellationTokenSource tokenSource = new CancellationTokenSource();
        System.Net.WebSockets.ClientWebSocket client = new System.Net.WebSockets.ClientWebSocket();
        public Form1()
        {
            InitializeComponent();
            
        }

        private async void button1_Click(object sender, EventArgs e)
        {
            try
            {
                var content=this.rtbContent.Text;
                if (string.IsNullOrEmpty(content))
                {
                    MessageBox.Show("請輸入內(nèi)容來發(fā)送");
                    return;
                }
                if (client.State != System.Net.WebSockets.WebSocketState.Open)
                {
                    tokenSource = new CancellationTokenSource();
                    client = new System.Net.WebSockets.ClientWebSocket();
                    //client.Options.KeepAliveInterval = TimeSpan.FromSeconds(1);
                    await client.ConnectAsync(new Uri("ws://127.0.0.1:8081"), tokenSource.Token);
                    var bytes = new byte[10240];
                    var array = new ArraySegment<byte>(bytes);
                    Task.Factory.StartNew(async () =>
                    {
                        while (true)
                        {
                            try
                            {
                                var msg = await client.ReceiveAsync(array, tokenSource.Token);
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                                tokenSource.Cancel();
                                return;
                            }
                        }
                    });
                }
                var buffer = Encoding.UTF8.GetBytes(content);
                await client.SendAsync(new ArraySegment<byte>(buffer), System.Net.WebSockets.WebSocketMessageType.Text, true, tokenSource.Token);
                MessageBox.Show($"已發(fā)送{buffer.Length}個字節(jié)");
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.ToString());
            }
        }
    }

注意:無論是客戶端斷開還是服務(wù)端斷開,如果正在讀取消息,則會觸發(fā)錯誤。利用此機(jī)制可以很方便的處理重連問題。

websocket實現(xiàn)go(server)與c#(client)通訊,websocket,golang,c#文章來源地址http://www.zghlxwxcb.cn/news/detail-740139.html

到了這里,關(guān)于websocket實現(xiàn)go(server)與c#(client)通訊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • go內(nèi)置庫函數(shù)實現(xiàn)client與server數(shù)據(jù)的發(fā)送接收

    功能:客戶端持續(xù)寫入數(shù)據(jù),直到輸入exit退出,服務(wù)端讀取數(shù)據(jù)并打印 注意:server和client目錄在同一層級 server/main client/main go開啟協(xié)程,數(shù)據(jù)寫入結(jié)束向管道輸入信號,主線程獲取信號,退出。否則主線程運(yùn)行結(jié)束會直接退出

    2024年02月19日
    瀏覽(24)
  • C# 實現(xiàn) Websocket通訊聊天 (管用、超好使,點個贊)

    C# 實現(xiàn) Websocket通訊聊天 (管用、超好使,點個贊)

    WebSocket出現(xiàn)之前,Web端為了實現(xiàn)即時通訊,所用的技術(shù)都是Ajax輪詢(polling)。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務(wù)器發(fā)出HTTP request,然后由服務(wù)器返回最新的數(shù)據(jù)給客服端的瀏覽器。這種傳統(tǒng)的HTTP request 的模式帶來很明顯的缺點 – 瀏覽器需要不斷的向服

    2024年02月16日
    瀏覽(22)
  • python socket編程7 - 使用PyQt6 開發(fā)UI界面新增實現(xiàn)UDP server和client單機(jī)通訊的例子

    python socket編程7 - 使用PyQt6 開發(fā)UI界面新增實現(xiàn)UDP server和client單機(jī)通訊的例子

    在第五篇中,簡單實現(xiàn)了命令行下的 TCP/UDP server和client的單機(jī)通訊。 在第六篇中,實現(xiàn)了PyQt6開發(fā)界面,TCP協(xié)議實現(xiàn)的單機(jī)server和client的通訊功能。 這一篇,在第六篇的基礎(chǔ)上,增加了UDP server和client的單機(jī)通訊功能。 1、UDP Server 界面實現(xiàn)服務(wù)配置和數(shù)據(jù)提供 2、UDP Server封裝

    2024年02月19日
    瀏覽(27)
  • 公網(wǎng)WebSocket Client遠(yuǎn)程連接本地WebSocket Server【內(nèi)網(wǎng)穿透】

    公網(wǎng)WebSocket Client遠(yuǎn)程連接本地WebSocket Server【內(nèi)網(wǎng)穿透】

    目錄 1. Java 服務(wù)端demo環(huán)境 2. 在pom文件引入第三包封裝的netty框架maven坐標(biāo) 3. 創(chuàng)建服務(wù)端,以接口模式調(diào)用,方便外部調(diào)用 4. 啟動服務(wù),出現(xiàn)以下信息表示啟動成功,暴露端口默認(rèn)9999 5. 創(chuàng)建隧道映射內(nèi)網(wǎng)端口 6. 創(chuàng)建隧道映射本地端口 7. 測試公網(wǎng)遠(yuǎn)程連接 jdk1.8 框架:springboot+maven 工

    2023年04月11日
    瀏覽(17)
  • websocket實現(xiàn)通訊——Java

    websocket實現(xiàn)通訊——Java

    參考博客0 1)通知功能: 2)數(shù)據(jù)收集: 3)加密 認(rèn)證: 4)反向控制鉤子: 1、websocket則允許我們在一條ws連接上同時并發(fā)多個請求,即在A請求發(fā)出后A響應(yīng)還未到達(dá),就可以繼續(xù)發(fā)出B請求。由于TCP的慢啟動特性(新連接速度上來是需要時間的),以及連接本身的握手損耗,

    2024年02月15日
    瀏覽(19)
  • Netty 教程 – 實現(xiàn)WebSocket通訊

    WebSocket 協(xié)議是基于 TCP 的一種新的網(wǎng)絡(luò)協(xié)議,它實現(xiàn)了瀏覽器與服務(wù)器 全雙工(full-duplex)通信 ,允許 服務(wù)器主動發(fā)送信息給客戶端 優(yōu)點及作用 Http協(xié)議的弊端: Http協(xié)議為半雙工協(xié)議。(半雙工:同一時刻,數(shù)據(jù)只能在客戶端和服務(wù)端一個方向上傳輸) Http協(xié)議冗長且繁瑣 易

    2024年02月09日
    瀏覽(19)
  • SpringBoot+WebSocket實現(xiàn)即時通訊(四)

    SpringBoot+WebSocket實現(xiàn)即時通訊(四)

    緊接著上文《SpringBoot+WebSocket實現(xiàn)即時通訊(三)》 本博客姊妹篇 SpringBoot+WebSocket實現(xiàn)即時通訊(一) SpringBoot+WebSocket實現(xiàn)即時通訊(二) SpringBoot+WebSocket實現(xiàn)即時通訊(三) SpringBoot+WebSocket實現(xiàn)即時通訊(四) 用戶管理:業(yè)務(wù)自己實現(xiàn),暫從數(shù)據(jù)庫添加 好友管理:添加好

    2024年02月21日
    瀏覽(16)
  • uniapp使用WebSocket實現(xiàn)即時通訊

    UniApp是一個基于Vue.js的跨平臺應(yīng)用開發(fā)框架,它允許開發(fā)者使用HTML、CSS和JavaScript構(gòu)建多平臺的移動應(yīng)用程序。要使用WebSocket在UniApp中實現(xiàn)即時通訊功能,你可以按照以下步驟進(jìn)行操作: 在UniApp項目的根目錄下,找到 manifest.json 文件并打開它。 在 manifest.json 文件中,添加以下

    2024年02月06日
    瀏覽(15)
  • 【websocket】Node+Vue2+WebSocket實現(xiàn)前后端通訊

    【websocket】Node+Vue2+WebSocket實現(xiàn)前后端通訊

    WebSocket是一個長連接,客戶端可以給服務(wù)端發(fā)送消息,服務(wù)端也可以給客戶端發(fā)送消息,是 全雙工通信。 平時的前后端分離項目,是前端請求結(jié)果獲取后端服務(wù)器數(shù)據(jù),從而渲染到頁面,服務(wù)端無法主動向客戶端發(fā)起消息,某些需求場景下,一旦客戶端 需要知道服務(wù)端的頻

    2024年02月02日
    瀏覽(22)
  • Vue中利用websocket實現(xiàn)實時通訊

    目錄 一、webSocket是什么? 二、WebSocket 原理 三、WebSocket 特點 四、WebSocket 應(yīng)用場景 五、使用步驟 1.安裝相關(guān)依賴 2.在Vue組件中創(chuàng)建WebSocket連接 3.向服務(wù)器發(fā)送消息 4.關(guān)閉WebSocket連接 總結(jié) ????????WebSocket 是一種基于 TCP 協(xié)議的全雙工通信協(xié)議,它可以在單個 TCP 連接上實現(xiàn)

    2024年02月08日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包