2012-02-15 67 views
0

考虑使用UNIX套接字作为IPC机制的多个客户端进程联系的服务器进程。UNIX套接字:客户端是否可以读取适用于其他客户端的数据?

每个客户端代码都在无限循环中运行,试图从/向套接字读写数据。

我的问题:客户如何知道它不是正在读取某些其他进程读取的数据?服务器进程正在将数据写入单个套接字,对吗?

对于TCP/IP这个问题没有任何意义 - 套接字将意味着一个元组<remote host, remote port, local host, local port, protocol>,因此尝试访问服务器的不同计算机上运行的进程永远不会读取彼此的数据。

但是对于UNIX套接字它只是一个文件吗?或者我错过了什么?

+0

你可以添加一些代码吗? – tafoo85 2012-02-15 14:43:42

+0

@ tafoo85:这只是多个客户端进程联系的UNIX服务器进程的一般情况。由于IPC方案是映射到文件的UNIX域套接字,我的问题是客户端如何知道某些数据是否适合它,因为服务器始终将数据写入相同的套接字? – Fanatic23 2012-02-15 14:52:26

+0

如果我可以参考一些代码,它通常有助于解释。就这样。 – tafoo85 2012-02-16 18:03:36

回答

1
  • 在服务器上,每个客户端都有自己的套接字。显然你不会读取发送到不同客户端的数据。
  • 一个UNIX套接字是而不是一个文件,但是它的很多功能都可以通过文件API调用来访问。
+0

+1。你可以请分享一些链接,我可以找到服务器如何解释UNIX套接字或任何讨论关于内部的细节。 – Fanatic23 2012-02-15 15:27:37

+0

旧的unix adagium是:“一切都是文件”。并不是所有的文件都是相同的(例如,你不能找到一个tty),但是在大多数文件/ inode中实现了open()read()write()。 Listen()和bind()是为套接字描述符实现的,但显然不适用于磁盘文件。 – wildplasser 2012-02-15 15:38:33

+0

我想我说过同样的话。它*看起来像一个文件。但事实并非如此。 – 2012-02-15 15:40:59

相关问题