ruby socket dgram示例

时间:2010-04-27 22:56:08

标签: ruby sockets unix-socket

我正在尝试在ruby中使用unix套接字和SOCK_DGRAM,但我很难搞清楚如何做到这一点。到目前为止,我一直在尝试这样的事情:

sock_path = 'test.socket'
s1 = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM, 0)
s1.bind(Socket.pack_sockaddr_un(sock_path))

s2 = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM, 0)
s2.bind(Socket.pack_sockaddr_un(sock_path))

s1.send("HELLO")
s2.recv(5) # should equal "HELLO"

有人有这方面的经验吗?

1 个答案:

答案 0 :(得分:2)

通常情况下,您需要对客户端和服务器套接字使用connectbind,因此需要两个不同的地址进行绑定

require 'socket'

sock_path = 'test.socket'
sock_path2 = 'test2.socket'

s1 = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM, 0)
s1.bind(Socket.pack_sockaddr_un(sock_path))

s2 = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM, 0)
s2.bind(Socket.pack_sockaddr_un(sock_path2))
s2.connect(Socket.pack_sockaddr_un(sock_path))

s1.connect(Socket.pack_sockaddr_un(sock_path2))
s1.send("HELLO", 0)
puts s2.recv(5)

=> HELLO
相关问题