hprose / hprose-php

Hprose is a cross-language RPC. This project is Hprose 3.0 for PHP
MIT License
1.97k stars 390 forks source link

在使用tcp的时候用.net 做server端,用php做客户端去连server端会出错 #110

Open lampsunny opened 5 years ago

lampsunny commented 5 years ago

PHP Fatal error: Uncaught exception 'Exception' with message 'response read error' in /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php:59 Stack trace:

0 /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php(393): Hprose\Socket\Transporter->getLastError('response read e...')

1 /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php(401): Hprose\Socket\Transporter->syncSendAndReceive('Cs5"hello"a1{s9...', Object(stdClass))

2 /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Client.php(90): Hprose\Socket\Transporter->sendAndReceive('Cs5"hello"a1{s9...', Object(stdClass))

3 /wwwroot/vendor/hprose/hprose/src/Hprose/Client.php(539): Hprose\Socket\Client->sendAndReceive('Cs5"hello"a1{s9...', Object(stdClass))

4 /wwwroot/vendor/hprose/hprose/src/Hprose/Client.php(109): Hprose\Client->afterFilterHandler('Cs5"hello"a1{s9...', Object(stdClass))

5 /wwwroot/canyin_tp in /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php on line 59

Fatal error: Uncaught exception 'Exception' with message 'response read error' in /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php:59 Stack trace:

0 /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php(393): Hprose\Socket\Transporter->getLastError('response read e...')

1 /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php(401): Hprose\Socket\Transporter->syncSendAndReceive('Cs5"hello"a1{s9...', Object(stdClass))

2 /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Client.php(90): Hprose\Socket\Transporter->sendAndReceive('Cs5"hello"a1{s9...', Object(stdClass))

3 /wwwroot/vendor/hprose/hprose/src/Hprose/Client.php(539): Hprose\Socket\Client->sendAndReceive('Cs5"hello"a1{s9...', Object(stdClass))

4 /wwwroot/vendor/hprose/hprose/src/Hprose/Client.php(109): Hprose\Client->afterFilterHandler('Cs5"hello"a1{s9...', Object(stdClass))

5 /wwwroot/canyin_tp in /wwwroot/vendor/hprose/hprose/src/Hprose/Socket/Transporter.php on line 59

后面测试用php做server端,用.net做客户端也连不上,但是测试http协议都正常

andot commented 5 years ago

hprose 3.0 的 TCP 增加了安全验证机制,所以跟 2.0 的不兼容,目前 .NET 版本是 hprose 3.0。而 php 版本是 hprose 2.0。所以它们在 TCP 上不能互通。

lampsunny commented 5 years ago

hprose 3.0 的 TCP 增加了安全验证机制,所以跟 2.0 的不兼容,目前 .NET 版本是 hprose 3.0。而 php 版本是 hprose 2.0。所以它们在 TCP 上不能互通。

有没有解决办法,怎么才能让.net 能够连接php的server端,什么地方能下载.net 2.0的版本,是不是用.net2.0 和php2.0就可以连接了

andot commented 5 years ago

hprose 没有 .NET 的 2.0 版本。但是有 1.5.8 版本。3.0 以下不建议用 TCP,1.0-2.0 的 TCP 服务器没有请求验证,如果有无效请求发送到服务器,服务器容易崩溃。

lampsunny commented 5 years ago

hprose 没有 .NET 的 2.0 版本。但是有 1.5.8 版本。3.0 以下不建议用 TCP,1.0-2.0 的 TCP 服务器没有请求验证,如果有无效请求发送到服务器,服务器容易崩溃。

好的,谢谢,php出了3.0是不是就可以和.net 3.0进行tcp连接了,php的3.0大概什么时候出

andot commented 5 years ago

是的。但是 PHP 版本的 hprose 3.0 不知道何时能完成。因为下个月起,我要开始工作了,用来开发 hprose 的时间大概只有周末休息的时间了。