我对ruby还比较陌生,但我已经习惯了使用ruby套接字,因为我多次使用“socket”类,所以我可以完全控制我的套接字及其选项。
问题是我试图让它对我来说有点简单,所以我试图使用'tcpsocket'类,witch(我猜)没有给你像'socket'类那样多的控制。
我的剧本是这样的:
require 'socket' client = TCPSocket.open('5.5.5.5', '5555') client.send("msg", 0) # 0 means standard packet client.close
问题是,应该是什么而不是发送线上的“0”?如果“0”意味着标准包,除了标准之外还能存在什么,是对TCP包的一些控制吗??如果是这样,那么对我来说,这将比使用“socket”类手工编写整个socket要容易得多。
第二个参数 send 是 flags 参数。它被传递到 发送 系统调用。您通常希望将此设置保留在0。
send
flags
发送
在我的系统中,根据man页面,其他可能的标志是:
#define MSG_OOB 0x1 /* process out-of-band data */ #define MSG_DONTROUTE 0x4 /* bypass routing, use direct interface */