java web项目 与 c++程序 的socket通信问题

wind1205 2017-11-27 04:40:12
javaweb服务端与服务器上的c++程序,是使用socket连接的,c++作为socket的server端,java作为socket的client端。
普通用户网页调用java接口后,java通过socket向c++程序发送数据,c++程序处理完成后,将结果返回给java端。
出现问题:
java多线程调用socket连接c++程序时,会出现c++无法向java端返回结果的现象。
...全文
592 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
clever101 2019-07-17
  • 打赏
  • 举报
回复
请教楼主一个问题,就是java作为服务端收到c++客户端发来的消息后,如何发给网页前端呢?
wind1205 2017-11-29
  • 打赏
  • 举报
回复
引用 4 楼 Runnerchin 的回复:
没有关系。java用多线程调用的时候,发起端的LocalPort是不一样的,服务器可以根据这个LocalPort(对服务器来说是RemotePort)来定位到具体是哪个会话。听你的描述很可能是C++在处理的时候没有异步,直接用侦听socket去响应请求了。正常的socket服务端服务流程应该是:侦听,接收到ConnectRequest时new一个新的socket异步Accept,所有的后续会话都在这个新socket里进行。
在c++端加了异步处理,能够正常返回了
X-i-n 2017-11-28
  • 打赏
  • 举报
回复
没有关系。java用多线程调用的时候,发起端的LocalPort是不一样的,服务器可以根据这个LocalPort(对服务器来说是RemotePort)来定位到具体是哪个会话。听你的描述很可能是C++在处理的时候没有异步,直接用侦听socket去响应请求了。正常的socket服务端服务流程应该是:侦听,接收到ConnectRequest时new一个新的socket异步Accept,所有的后续会话都在这个新socket里进行。
wind1205 2017-11-28
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
这么做没问题,需要考虑是代码本身的问题。交互的时候,如果在相同网络里,也可以用REDIS、数据库来传输数据
java多线程调用的时候,c++端只返回了其中一个请求的结果。和java端调用的时候 ip 是同一个有关系吗?
X-i-n 2017-11-27
  • 打赏
  • 举报
回复
这么做没问题,需要考虑是代码本身的问题。交互的时候,如果在相同网络里,也可以用REDIS、数据库来传输数据
wind1205 2017-11-27
  • 打赏
  • 举报
回复
这种通信方式对吗??有更好的通信方式吗??

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧