拨号TCP 127.0.0.1:9091:连接:连接被拒绝

时间:2020-09-30 14:01:49

标签: 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);
}

它会正常生成文件

User.java -> generated from protoc compiler
userGrpc.java -> generated from protoc compiler

GRPCService.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();
    }
}

显示服务器正在运行的system.out.println;

Server started at 9091

然后我在ubuntu 18.04的端口9091上打开了TCP防火墙规则

sudo ufw allow from any to any port 9091 proto tcp

结果:

java      28277    ubuntu   49u  IPv6   478307      0t0  TCP *:9091 (LISTEN)

我什至可以从终端卷曲

* 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

卷曲命令

   curl -v http://localhost:9091

但是当从gui客户端执行时

https://github.com/gusaul/grpcox

我拒绝连接。

dial tcp 127.0.0.1:9091: connect: connection refused

Error from client

我没有使用任何VPN或代理,GUI应用程序实际上在容器中运行。

docker run -p 6969:6969 -v {ABSOLUTE_PATH_TO_LOG}/log:/log -d gusaul/grpcox

如果有人可以帮助我。

谢谢你叠!

1 个答案:

答案 0 :(得分:1)

如果您将grpcox作为docker容器运行,则需要为该容器提供主机网络访问权限(最简单),以便它可以访问在主机(!)端口上运行的服务器{{ 1}},即9901,或为其提供DNS地址,它可以解析您的主机地址,即localhost:9901

要访问主机网络,请运行容器...

your-host:9901