検索
ホームページバックエンド開発GolangGolang jsonrpc2 サーバーはどこでリッスンしますか?

Golang jsonrpc2 服务器在哪里监听?

Golang jsonrpc2 サーバーはどこでリッスンしますか?これは、多くの Golang 開発者が jsonrpc2 プロトコルを使用するときによく遭遇する問題です。 Golang では、jsonrpc2 サーバーがどこでリッスンするかは、コードの実装方法によって異なります。一般的な方法は、クライアントからのリクエストを受信するためにサーバーに特定のポートをリッスンさせることです。さらに、ローカル ループバック インターフェイス (localhost) や指定された IP アドレスなど、特定のネットワーク インターフェイス上でサーバーを監視することもできます。サーバーがリクエストをリッスンして正常に処理できるようにするには、開発者はコード内でリッスンする場所を明確に指定する必要があります。

質問内容

golangで簡単なlspサーバーを作成したいのですが、これまでに書いたコードは次のとおりです。 リーリー

それは機能しますが、どのポートで実行されるのか、または一般にクライアント経由でそれを呼び出す方法がわかりません。何かアイデアがある人はいますか?

ポート 4389 であるべきだと思いますが、それではありません

このスクリプトをテストに使用しています:

リーリー

このクライアントは別のスタックオーバーフローの質問から取得したので、これは正しいと思います。

解決策

なるほど:

リーリー

これは、コードがネットワーク接続経由​​の

ではなく、標準入出力 (stdin/stdout) 経由で json-rpc を使用することを意味します。 os.stdin
jsonrpc2.newbufferedstream への引数として使用する場合、入力がサーバーを実行しているプロセスの標準入力から取得されるように指定します。応答は標準出力に送信されます。 したがって、サーバーはどのネットワーク ポートでもリッスンしません。標準入出力に直接送信されるデータと対話します。これは通常、プロセス間通信に使用されます。たとえば、あるプロセスがサーバー プロセスを呼び出して応答を受信する場合などです。

たとえば、「

go: 別のプロセスとの双方向通信?
」または davidelorenzoli/stdin-stdout-ipc を参照してください。 json-rpc サーバーがネットワーク ポートでリッスンするようにするには、

net パッケージ を使用する必要があります。また、http リクエストを URL に送信するのではなく、正しいネットワーク ポートにリクエストを送信するようにクライアント スクリプトを変更する必要もあります。 リーリー これは、

serve

メソッドがローカルホストのポート 4389 でリッスンする TCP リスナーを作成する基本的な例です。次に、接続を待機するループに入り、接続を取得すると、json-rpc サーバーを使用して接続を処理する新しい goroutine を開始します。 クライアント側では、サーバーへの TCP 接続を開き、その接続に json-rpc リクエストを書き込み、応答を読み取る必要があります。

requests ライブラリ は、生の TCP 接続ではなく http リクエスト用であるため、Python スクリプトのように使用できません。 TCP 接続を作成し、それを介してデータを送受信するには、Python またはクライアントの言語で
socket ライブラリ を使用する必要があります。 ただし、

lsp (言語サーバー プロトコル)

はネットワーク ソケットではなく stdin/stdout 上で実行されることに注意してください。 これは、lsp サーバーは通常、エディター/IDE によって子プロセスとして起動され、これらのチャネルを通じて直接通信するためです。したがって、ユースケースによっては、生の stdin/stdout メソッドの方が適切な場合があります。

以上がGolang jsonrpc2 サーバーはどこでリッスンしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はstackoverflowで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Golang chromedp dockerfileGolang chromedp dockerfileFeb 09, 2024 am 10:09 AM

我有一个golang代码,它使用chromedp连接到用户的本地chrome这是我的代码:packagemainimport("context""fmt""log""os""time""github.com/chromedp/chromedp""github.com/gin-gonic/gin")funcmain(){api:=gin.default()api.get("api

Golang Fiber 模板引擎 HTML:渲染:模板不存在Golang Fiber 模板引擎 HTML:渲染:模板不存在Feb 11, 2024 pm 12:30 PM

在我的ubuntu22.10digitalocean服务器上,我正在尝试使用golang和fiber以及html模板引擎。到目前为止很喜欢它。一切正常,包括mysql连接和发送电子邮件。除了一件事。我不断收到错误渲染:模板索引不存在。文件系统:├──/gogo├──main├──main.go├──go.mod├──go.sum├──/views└──index.html└──/public

如何解决 Golang 中的错误“ORA-00911:无效字符”?如何解决 Golang 中的错误“ORA-00911:无效字符”?Feb 08, 2024 pm 09:39 PM

我在调用以下函数时遇到错误“ORA-00911:无效字符”。如果我使用带有硬编码值的SQL查询(截至目前,它已在下面的代码片段中注释掉),那么我可以在邮递员中以JSON响应获取数据库记录,没有任何问题。所以,看起来我的论点做错了。仅供参考,我正在使用“github.com/sijms/go-ora/v2”包连接到oracledb。另外,“DashboardRecordsRequest”结构位于数据模型包中,但我已将其粘贴到下面的代码片段中以供参考。请注意,当我进行POC时,我们将使用存

在Mac电脑上设置和安装Golang开发环境的步骤在Mac电脑上设置和安装Golang开发环境的步骤Feb 24, 2024 pm 04:30 PM

Mac电脑是许多开发者钟爱的工作平台,而Golang作为一种高效的编程语言,也受到了越来越多人的喜爱。本文将详细介绍如何在Mac电脑上配置和安装Golang的开发环境,同时提供具体的代码示例,帮助读者快速入门和使用Golang进行开发。步骤一:下载Golang安装包首先,我们需要从Golang官方网站(https://golang.org/dl/)下载适用于

学习Golang开发:详细步骤解析及从零起步学习Golang开发:详细步骤解析及从零起步Jan 23, 2024 am 08:06 AM

从零开始学习Golang开发:详细步骤解析,需要具体代码示例随着互联网的快速发展,编程语言也在不断地涌现出来。其中一种备受瞩目的语言就是Go语言,简称Golang。Golang是由Google开发的一种静态类型、编译型的高性能编程语言,它的设计目标是提供一种简单、高效、可靠的开发语言。对于初学者来说,从零开始学习Golang开发可能会感到困惑和畏惧。本文将按

减法聚合 Mongo 文档 Golang减法聚合 Mongo 文档 GolangFeb 08, 2024 pm 09:05 PM

我在mongo中有这个文档{"_id":{"$oid":"649d3d688a1f30bf82e77342"},"test_value":{"$numberlong":"10"}}我想用这个golang代码将“test_value”减一jsonInput:=[]map[string]interface{}{{"$match":map[string]interface{}{

golang 中带有切片的并发映射golang 中带有切片的并发映射Feb 11, 2024 am 09:57 AM

在该领域的一位开发人员几个月前离开后,我一直在尝试解决并发问题,但我找不到解决此问题的适当方法。对于上下文,我们将客户数据加载到如下结构中:[键]->{值}[客户特定哈希]->{数据点/文件切片}示例-格式确实很糟糕,抱歉:[a60d849ad97bfb833e1096941]->{{StartDate:'01-02-2022',EndDate:'28-02-2022',DataFrames:[1598,921578,12981,21749,1925

从 Golang 中的 /proc/meminfo 中提取内存和交换信息从 Golang 中的 /proc/meminfo 中提取内存和交换信息Feb 12, 2024 pm 06:24 PM

我想从golang中的/proc/meminfo中提取memtotal、memfree、memavailable、swaptotal和swapfree的值。到目前为止,我得到的最接近的是使用fmt.sscanf(),它将一次给出我想要的值,但我也得到了许多带有零的输出行。这是我正在使用的代码:packagemainimport("bufio""fmt""os")funcmain(){f,e:=os.open("/proc

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境