我尝试键入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 doc和我可以访问的每个网站,但我没有看到任何解释,有人可以提供帮助吗?
顺便说一句,这是我的服务器端代码,我不确定它是否正确,或许可以看看: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
谢谢
答案 0 :(得分:1)
来自man send:
MSG_OOB
在支持这一概念的套接字上发送带外数据(例如,类型为SOCK_STREAM);底层协议还必须支持带外数据
因此,您尝试在UDP(SOCK_DGRAM)套接字上使用用于TCP(SOCK_STREAM)的标志。难怪它抱怨不支持该标志。