从go程序中发消息给winform(C#)
2021/11/3 22:09:53
本文主要是介绍从go程序中发消息给winform(C#),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景:服务端语言为GO,客户端语言为:C#(WinForm);在客户端操作后,服务器会产生一些消息,需要将这些消息实时的传递给客户端。
一、C#核心代码
using Hprose.RPC; using Hprose.RPC.Plugins.Log; using Hprose.RPC.Plugins.Push; using System; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; using System.Windows.Forms; namespace win_push_msg_client { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void 测试ToolStripMenuItem_Click(object sender, EventArgs e) { callAppendLog("开始"); Task.Factory.StartNew(() => { try { #region // 服务端启动 string addrStr = "127.0.0.1"; IPAddress iPAddress = Dns.GetHostAddresses(addrStr)[0]; TcpListener server = new TcpListener(iPAddress, 8899); server.Start(); var service = new Broker(new Service()).Service; ServiceCodec.Instance.Debug = true; service.Use(Log.IOHandler) .Use(Log.InvokeHandler) .Bind(server); // 启动订阅服务 var client = new Client(string.Format("tcp4://{0}:8899", addrStr)); var prosumer = new Prosumer(client, "C#"); prosumer.OnSubscribe += (topic) => { this.callAppendLog(topic + " 订阅成功."); }; prosumer.OnUnsubscribe += (topic) => { this.callAppendLog(topic + " 取消订阅成功"); }; prosumer.Subscribe<string>("log_msg", (data) => { this.callAppendLog(data); }); this.callAppendLog("已订阅主题:log_msg"); #endregion } catch (Exception ex) { this.callAppendLog(ex.Message); } }); } private void callAppendLog(string msg) { this.Invoke(new Action(() => { this.richTextBox1.AppendText(msg); this.richTextBox1.AppendText("\n"); })); } } }
二、GO核心代码:
package main import ( "github.com/hprose/hprose-golang/v3/rpc" "github.com/hprose/hprose-golang/v3/rpc/plugins/push" "time" ) func main() { client2 := rpc.NewClient("tcp4://127.0.0.1:8899/") prosumer2 := push.NewProsumer(client2, "发送方1") time.Sleep(time.Millisecond * 100) prosumer2.Push("人来了1a", "log_msg", "C#") prosumer2.Push("人来了2c", "log_msg", "C#") }View Code
这篇关于从go程序中发消息给winform(C#)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#