Unix domain socket可用于同一个进程中的不同线程么?

谭海燕 2012-02-27 09:17:34
准备用Unix domain socket 写点东西。

咨询下,Unix domain socket可以用于同一个进程中的不同线程间发送数据么?
...全文
447 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liv2005 2012-02-28
  • 打赏
  • 举报
回复
感觉同上,如果要做unix socket要做的话,是可以做的,只不过线程间用这个通信感觉很奇怪...呵呵

不知道LZ的业务是什么,猜测管道应该更合适吧...
Arnold9009 2012-02-28
  • 打赏
  • 举报
回复
Unix domain socket 一般多用于本机不同进程间通信吧

同一进程的不同线程之间,通过管道或者共享内存不是更方便一些么,难道数据量特别大?
justkk 2012-02-28
  • 打赏
  • 举报
回复
一个进程中的两个线程,一个作为服务器,另外一个作为客户端,两者通过Unix domain socket通信?
justkk 2012-02-28
  • 打赏
  • 举报
回复
那应该没问题

也可以考虑使用socketpair()
谭海燕 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liv2005 的回复:]

感觉同上,如果要做unix socket要做的话,是可以做的,只不过线程间用这个通信感觉很奇怪...呵呵

不知道LZ的业务是什么,猜测管道应该更合适吧...
[/Quote]

管道其实和unix domain socket差不多。
谭海燕 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 justkk 的回复:]

一个进程中的两个线程,一个作为服务器,另外一个作为客户端,两者通过Unix domain socket通信?
[/Quote]

对。就是要这么做。综合考虑,unix domain socket最符合我的需求。
谭海燕 2012-02-28
  • 打赏
  • 举报
回复
呵呵。多谢各位的建议。我之所以怎么做,主要是跨语言,C,C++,JAVA, JS通用组件。


qq120848369 2012-02-27
  • 打赏
  • 举报
回复
DOMAIN和SOCKET的区别:

1,SOCKET绑定在IP:PORT上,DOMAIN绑定在PATH上.
2,SOCKET通过connect调用后, 可以由内核分配本地地址, 而DOMAIN不行, 所以DOMAIN的服务端和客户端都要有自己的PATH去绑定. 觉得客户端指定PATH没意义的话可以tmpfile系列函数随机生成即可, 因为它保证生成的文件不存在于文件系统中, 这也是DOMAIN调用BIND对PATH的要求, 即必须不存在.
谭海燕 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qq120848369 的回复:]

当然可以, 当作SOCKET用就可以了.
[/Quote]

恩。没怎么去了解过domain socket的原理。如果是tcp的话,肯定是可以的,因为内核会为每个socket随机分配一

个端口号。但是,domain,好像是通过文件,以及文件描述符来识别的。同一个进程内的不同线程,共享文件

描述符。

不知道你何高见。
qq120848369 2012-02-27
  • 打赏
  • 举报
回复
当然可以, 当作SOCKET用就可以了.

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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