关于网络内进程间通信的问题
A 机器的进程 1 想要和 B 机器的进程 2 建立连接并进行通信交互,但是B机器的进程 2 不能监听网络,怎么才能建立这个连接呢?
我的想法是B机器再启动一个监听进程3,专门负责监听进程 1 的连接请求,等和进程1建立连接后,进程3通过某种方式,把它和进程1之间的socket连接转移到进程2上,
刚开始接触网络方面的东西,不知道这样的想法是否可以实现,具体又怎么实现呢,
[ 本帖最后由 japonensis 于 2005-12-9 11:19 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
你可以采取另外的方式。 你所说的进程3 和 进程 2 用其他方式交换数据未必就只有socket.
比如可以共享内存。消息队列。
我的意思是, 1和2 不能直接建立连接,让1和3 建立连接,然后,3把他的socket描述符传递给2,1和2 就能 通信了, 这样能实现吗
因为进程2 早已经已经存在了
[ 本帖最后由 japonensis 于 2005-12-9 11:23 编辑 ]
能。进程间也可以复制文件描述符得。详细请参考<<Unix环境高级编程>>15章 如果我没记错的话。
晕,俺有这本书啊,怎么没看见
你再仔细看看。
我想这个就像QQ聊天一样吧,两个人建立连接也是一方连接到服务器,然后服务器再把连接转移个另外一个人吧,
猜的,不知道具体是怎么实现的
QQ 的服务器中转一个 IP 信息就差不多了……比这个单纯得多。
QQ传的是IP吗, 服务器是怎么向处于局域网的QQ用户传IP呢
[ 本帖最后由 japonensis 于 2005-12-9 20:25 编辑 ]
是我说的不严谨。我猜想 QQ 服务器在通常情况下只能是传输连接信息或者直接转发消息。
我确信的是,转发 fd 目前只能通过 Unix Domain Socket (或者 STREAMS 管道)在本机内进程之间进行。