gpt4 book ai didi

ruby - 套接字不支持该操作- ruby 中的sendto(2)

转载 作者:行者123 更新时间:2023-12-03 11:59:45 28 4
gpt4 key购买 nike

我尝试输入ruby UDPsocket服务器端实践,这是给定的客户端代码:

require 'socket'
ip = "127.0.0.1"
port = 8888
flag = Socket::MSG_OOB # MSG_PEEK , MSG_WAITALL
client = UDPSocket.new
client.send("udp socket test message", flag, ip, port) code here

但是当我运行该文件时,命令行告诉我
Operation not supported on socket - sendto(2) for "127.0.0.1" port 8888 (Errno::EOPNOTSUPP)

我只是搜索所有的ruby文档和我可以访问的每个网站,但是我没有看到任何解释,有人可以提供帮助吗?

顺便说一句,这是我的服务器端代码,我不确定它是否正确,也许看一下:
require 'socket'
socket = UDPSocket.new
socket.bind('127.0.0.1',8888)
data = "udp socket test message"
data, addr = socket.recvfrom(1024)
puts "From addr: '%s', msg: '%s'" % [addr.join(','), data]
socket.close

谢谢你

最佳答案

man send:

MSG_OOB
Sends out-of-band data on sockets that support this notion (e.g., of type SOCK_STREAM); the underlying protocol must also support out-of-band data



因此,您尝试使用用于UDP(SOCK_DGRAM)套接字上的TCP(SOCK_STREAM)的标志。难怪它提示不支持该标志。

关于ruby - 套接字不支持该操作- ruby 中的sendto(2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434562/

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