She*_*ker 6 ubuntu protocol-buffers grpc grpc-java protobuf-java
我正在使用 gRPC 应用程序并构建一个简单的应用程序。在文件下面。
syntax = "proto3";
option java_multiple_files = true;
package com.grpc;
message HelloRequest {
string firstName = 1;
string lastname = 2;
}
message HelloResponse {
string greeting = 1;
}
service HelloService {
rpc hello(HelloRequest) returns (HelloResponse);
}
Run Code Online (Sandbox Code Playgroud)
它正常生成文件
User.java -> generated from protoc compiler
userGrpc.java -> generated from protoc compiler
Run Code Online (Sandbox Code Playgroud)
GRPC服务.java
package GRPCService;
import java.io.IOException;
import io.grpc.Server;
import io.grpc.ServerBuilder;
import user.UserService;
public class GPRCService {
public static void main(String[] args) throws IOException, InterruptedException {
Server server = ServerBuilder.forPort(9091).addService(new UserService()).build();
server.start();
System.out.println("Server started at " + server.getPort());
server.awaitTermination();
}
}
Run Code Online (Sandbox Code Playgroud)
system.out.println 显示服务器正在运行;
Server started at 9091
Run Code Online (Sandbox Code Playgroud)
然后我在 ubuntu 18.04 的端口 9091 上打开了 TCP 的防火墙规则
sudo ufw allow from any to any port 9091 proto tcp
Run Code Online (Sandbox Code Playgroud)
结果:
java 28277 ubuntu 49u IPv6 478307 0t0 TCP *:9091 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
我什至可以从终端卷曲
* Rebuilt URL to: http://localhost:9091/
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 9091 (#0)
> GET / HTTP/1.1
> Host: localhost:9091
> User-Agent: curl/7.58.0
> Accept: */*
>
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* Failed writing body (0 != 40)
* stopped the pause stream!
* Closing connection 0
Run Code Online (Sandbox Code Playgroud)
卷曲命令
curl -v http://localhost:9091
Run Code Online (Sandbox Code Playgroud)
但是当从 gui 客户端执行时
https://github.com/gusaul/grpcox
我的连接被拒绝。
dial tcp 127.0.0.1:9091: connect: connection refused
Run Code Online (Sandbox Code Playgroud)
我没有使用任何 VPN 或代理,GUI 应用程序实际上在容器内运行。
docker run -p 6969:6969 -v {ABSOLUTE_PATH_TO_LOG}/log:/log -d gusaul/grpcox
Run Code Online (Sandbox Code Playgroud)
如果有人可以请帮助我。
谢谢堆栈!
如果您grpcox作为 docker 容器运行,则需要为容器提供主机网络访问权限(最简单),以便它可以访问在主机 (!) 端口9901ie上运行的服务器localhost:9901,或者为其提供一个 DNS 地址它可以解析您的主机地址,即your-host:9901。
对于主机网络访问,运行容器...
docker run --net=host ... gusaul/grpcox
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12214 次 |
| 最近记录: |