gRPC .net学习

学习helloworld
server用.net
client有.net的控制台 和 unity

server端 直接使用vs2022创建(需自行看有无装asp.net哦),搜索gPRC,使用6.0吧,创建工程后直接F5跑起来,服务端到此完成
在这里插入图片描述
.net控制台client,创建新的控制台,使用NuGet,然后导入server端的Protos文件夹 在这里插入图片描述
学习helloWrold就先手动copy下目录咯.然后在vs上把其加入ItemGroup中去在这里插入图片描述
在这里插入图片描述
编辑client的代码咯

using Grpc.Net.Client;
using server;
using (var channel = GrpcChannel.ForAddress("https://localhost:5001"))//这个端口要看服务端跑起来的输出日志上的端口哦
{var client = new Greeter.GreeterClient(channel);var reply = client.SayHello(new HelloRequest(){Name = "客户端 sayHeloName"});var msg = reply.Message;Console.WriteLine(msg);
}

把服务器跑起来.然后在client跑起来 就能看到log了

server用.net
client有.net的控制台就跑通了

现用Unity连起来,就比较麻烦.这里需要看gitHub
https://github.com/doctorseus/grpc-dotnet-unity
第一种方案:把人家的Plugins直接copy到自己的目录
第二种方案就是在自己的server用NuGet安装人家对应的dll,再用everyThing搜索对应含有NuGet目录的dll_copy到自己plugins目录,举一个例子
在这里插入图片描述
这里要装挺多东西的,建议使用第一种方案.还要把人家GRPCBestHttpHandler.cs,PushPullStream.cs,ServerStreamHttpContent.cs,copy到自己项目中去
再去gitHub的把Best HTTP也导入自己的unity项目中去.
然后去自己Server端项目中,右键greet.proto,重新生成下.生成后把Greet.cs和GreetGRPC.cs copy到unity项目中去 (右键server在磁盘上用everyThing找)
在这里插入图片描述
到此unity的准备工作 都完成了
建新脚本 TestGRPC.cs

using Grpc.Net.Client;
using Grpc.Net.Extensions;
using server;
using UnityEngine;
public class TestGRPC : MonoBehaviour
{async void Start(){Debug.LogError("---开始---");var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions(){HttpHandler = new GRPCBestHttpHandler()});var client = new Greeter.GreeterClient(channel);var res = await client.SayHelloAsync(new HelloRequest(){Name = "造就helloworld"});Debug.LogError(res.Message);Debug.LogError("---结束---");}    
}

把TestGRPC.cs 挂在场景中去,把server跑起来…然后在Unity,跑起来.就能看到通信了

https://github.com/SendSi/gRPC_client_server

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Jedis来探讨池化技术

为什么需要池化技术 系统运行时必然是需要数据库连接、线程等一些重量级对象,频繁的创建这种对象对性能有着不小的开销,所以为了减少没必要的创建和开销,我们就用到了池化技术。 通过创建一个资源池来保存这些资源便于后续的复用&#xff0c…

【C++初阶】七、内存管理(C/C++内存分布、C++内存管理方式、operator new / delete 函数、定位new表达式)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【C初阶】六、类和对象(初始化列表、static成员、友元、内部类)-CSDN博客 目录 一 . C/C内存分布 C/C中程序内存区域划分: 二 . C内存管理方式 …

16.Java程序设计-基于SSM框架的android餐厅在线点单系统App设计与实现

摘要: 本研究旨在设计并实现一款基于SSM框架的Android餐厅在线点单系统,致力于提升餐厅点餐流程的效率和用户体验。通过整合Android移动应用和SSM框架的优势,该系统涵盖了用户管理、菜单浏览与点单、订单管理、支付与结算等多个功能模块&…

用户登录权限

文章目录 [TOC](文章目录) 前言一、 Cookie与session1.HTTP无状态2.cookie 和 session 的生命周期2.1 cookie 生命周期影响因素2.2 session 生命周期影响因素 3.cookie 和 session 的区别4.工作原理3 用户登录Node.js和Express验证session 二、JSON Web Token1. JWT 介绍2. JWT…

【算法系列篇】递归、搜索和回溯(二)

文章目录 前言1. 两两交换链表中的节点1.1 题目要求1.2 做题思路1.3 代码实现 2. Pow(X,N)2.1 题目要求2.2 做题思路2.3 代码实现 3. 计算布尔二叉树的值3.1 题目要求3.2 做题思路3.3 代码实现 4. 求根节点到叶结点数字之和4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面为大…

计算机毕业设计springboot+ssm停车场车位预约系统java

管理员不可以注册账号 停车位包括车位所在楼层、车位编号、车位类型(全时间开放/高峰期开放)、预定状态等 用户预约时要求支付预约时间段的停车费用 违规行为:1.停车超过预约时间段 2.预约未使用 于系统的基本要求 (1)功能要求&am…

6G来袭,真的有必要吗?

6G来袭,6G标准将在2025年完成制定,2030年商用。当5G都还没玩明白的时候,6G又来了。 这次6G又提出了三个全新高大上场景,感知通信、人工智能通信、天地一体泛在物联,精英们还说,未来要连接很多机器人、元宇宙…

PHP基础 - 循环与条件语句

循环语句 1)for循环: 重复执行一个代码块指定的次数。 for ($i = 0; $i < 5; $i++) { // 初始化 $i 为 0,每次循环后将 $i 值增加 1,当 $i 小于 5 时执行循环echo "The number is: $i \n"; // 输出当前 $i 的值并换行 }// 循环输出结果为: // The number …

mysql字段设计规范:使用unsigned(无符号的)存储非负值

如果一个字段存储的是数值&#xff0c;并且是非负数&#xff0c;要设置为unsigned&#xff08;无符号的&#xff09;。 例如&#xff1a; 备注&#xff1a;对于类型是 FLOAT、 DOUBLE和 DECIMAL的&#xff0c;UNSIGNED属性已经废弃了&#xff0c;可能在mysql的未来某个版本去…

C++ //习题2.5 请写出下列表达式的值。

C程序设计 &#xff08;第三版&#xff09; 谭浩强 习题2.5 习题2.5 请写出下列表达式的值。 (1) 3.5 * 3 2 * 7 - ‘a’ (2) 26 / 3 34 % 3 2.5 (3) 45 / 2 (int)3.14159 / 2 (4) a b (c a 6) 设a的初值为3 (5) a 3 * 5, a b 3 * 2 (6) (int)(a 6.5) % 2 …

UI自动化测试工具的定义及重要性

UI自动化测试工具在现代软件开发中起着不可或缺的作用。它们能够提高测试效率、减少人为错误、提供全面的测试覆盖&#xff0c;并支持持续集成。通过有效使用UI自动化测试工具&#xff0c;开发团队可以提高软件质量&#xff0c;提供更可靠的应用程序&#xff0c;满足用户的需求…

C语言之数组精讲(2)

目录 数组的复制 输入数组元素的值 对数组的元素进行倒序排列 使用数组进行成绩处理 对象式宏 数组元素的最大值和最小值 赋值表达式的判断 数组的元素个数 结语 数组的复制 我们把数组中的元素全部复制到另一个数组中。 #include<stdio.h>int main() {int i;int…

SwinIR: Image Restoration Using Swin Transformer

SwinIR 简介 论文地址&#xff1a;SwinIR: Image Restoration Using Swin Transformer 代码&#xff1a;SwinIR ​ 本文提出了一个基于swin transformer的图像超分模型swinIR。其中SwinIR分为三部分&#xff1a;浅层特征提取、深层特征提取和高质量图像重建模块。 现阶段问…

19.java程序设计-基于SpringBoot的博客管理系统的设计与实现

摘要 随着信息技术的迅速发展&#xff0c;博客作为一种重要的信息传播和交流工具&#xff0c;逐渐在互联网上占据重要地位。为了满足用户对个性化博客管理的需求&#xff0c;本研究设计并实现了一种基于Spring Boot框架的博客管理系统。 本系统通过采用前后端分离的架构&…

【算法题】密钥格式化 (js)

!](https://img-blog.csdnimg.cn/direct/bf9a3d781a8043c997593260c0a8306f.png) 第一部分的字符可以少于… const str "5F3Z-2e-9w"; const str1 "2-5g-3-J"; function solution(num, str) {const arr str.split("-");const head arr[0];…

【C++11(三)】智能指针详解--RAII思想循环引用问题

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; C11 1. 前言2. 为什么要有智能指针?3. RAII思想…

【BUG】微信小程序image不会随着url动态变化

问题描述&#xff1a; 第一次打开界面&#xff0c;显示的是默认头像而不是用户头像&#xff0c;似乎image里面的src只要第一次有值就不会再更新了 解决 不要给src里面的变量设置初始值&#xff0c;而是直接赋空值

DevOps搭建(七)-安装Jenkins详细步骤

这里我们用Docker进行安装 1、拉取Jenkins镜像 Jenkins download and deployment 选择LTS长期支持的版本,接着点击Docker链接进入 找到上面的版本,并copy拉取镜像的命令 docker pull jenkins/jenkins:2.426.1-lts 2、docker-compose安装Jenkins 首先创建安装目录/home/f…

STM32 cubeMX 呼吸灯实验

文章代码使用 HAL 库。 文章目录 一、1.PWM原理二、LED 原理图三、使用cubemx 配置 led四、PWM 相关函数五、PWM占空比占空比计算六、PWM 呼吸灯重要代码总结 呼吸灯 一、1.PWM原理 PWM全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种常…

拥有大量虾皮买家号有哪些好处

拥有众多Shopee买家账号&#xff0c;无疑是卖家们获取极大优势的一项策略。多账号的运用不仅有助于卖家在Shopee平台上获得更为丰富的流量&#xff0c;更能够在关键词排名和销售表现等方面为其带来显著提升。 首先&#xff0c;多个Shopee买家账号的灵活运用&#xff0c;使卖家能…