命令listen适用于Unix数据报套接字吗?

命令listen适用于Unix数据报套接字吗?

Unix 数据报套接字:系列 = AF_UNIX/AF_LOCAL 类型 = SOCK_DGRAM

如果我想为这种类型的套接字启动服务器,我是否需要通过调用 'listen' 将其标记为正在监听?我的印象是监听仅适用于面向连接的套接字。

答案1

不,listen()不能在数据报套接字上工作,因为没有要建立或拆除的连接。bind()连接套接字后,您可以立即开始通过sendto()指定接收地址来发送数据包。您可以使用recv()或 甚至read()接收数据包,但recvfrom()如果您还想知道谁发送了数据包(例如,以便您可以回复他们),则应该使用。

如果您想与特定主机交谈,您(但不需要)connect()在数据报套接字上使用。在这种情况下,connect()实际上不会与远程主机建立连接;它只会设置套接字的默认目标,因此您可以使用类似send()write()之类的函数,但不允许您指定目标。

相关内容