Unix 数据报套接字:系列 = AF_UNIX/AF_LOCAL 类型 = SOCK_DGRAM
如果我想为这种类型的套接字启动服务器,我是否需要通过调用 'listen' 将其标记为正在监听?我的印象是监听仅适用于面向连接的套接字。
答案1
不,listen()
不能在数据报套接字上工作,因为没有要建立或拆除的连接。bind()
连接套接字后,您可以立即开始通过sendto()
指定接收地址来发送数据包。您可以使用recv()
或 甚至read()
接收数据包,但recvfrom()
如果您还想知道谁发送了数据包(例如,以便您可以回复他们),则应该使用。
如果您想与特定主机交谈,您能(但不需要)connect()
在数据报套接字上使用。在这种情况下,connect()
实际上不会与远程主机建立连接;它只会设置套接字的默认目标,因此您可以使用类似send()
或write()
之类的函数,但不允许您指定目标。