> @zonghaishang 的答案:
> 
> > @xcorpio telnet调用,代码可以开一个tcp长连接,按照dubbo提供的调用命令,直接写socket数据和读取就可以了
> > 如果你熟悉dubbo框架代码,请阅读:org.apache.dubbo.rpc.protocol.dubbo.telnet.InvokeTelnetHandler
> > 如果不熟悉,请使用sudo tcpdump -i any -A dst port 20880 抓包看返回数据
> 
> 我有个疑问,telent 好像判断了是否是clientside
> 
> ```java
> private static boolean isClientSide(Channel channel) {
>         InetSocketAddress address = channel.getRemoteAddress();  //1
>         URL url = channel.getUrl();
>         return url.getPort() == address.getPort() &&
>                 NetUtils.filterLocalHost(url.getIp())
>                         
> .equals(NetUtils.filterLocalHost(address.getAddress().getHostAddress())); //2
>     }
> ```
> 
> 在 1 这个点channel.getRemoteAddress(); 是获取调用方的地址吧。
> 在 2 的时候会判断调用方ip 跟本机是否一致

在consumer端时 channel.getRemoteAddress();获取的是provider端的地址
在provider端时,这个拿到的是consumer端地址

telent只能连接到provider方,可以理解为dubbo服务提供方。

[ Full content available at: 
https://github.com/apache/incubator-dubbo/issues/3161 ]
This message was relayed via gitbox.apache.org for 
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to