gpt4 book ai didi

ruby 套接字dgram示例

转载 作者:行者123 更新时间:2023-12-03 12:01:41 24 4
gpt4 key购买 nike

我正在尝试在 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"

有人有这方面的经验吗?

最佳答案

在一般情况下,您需要使用 connectbind对于客户端和服务器套接字,因此您需要两个不同的地址进行绑定(bind)

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

关于 ruby 套接字dgram示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com