0

我仍然是 ruby​​ 的新手,但我习惯于使用 ruby​​ 套接字,因为我多次使用 'Socket' 类,所以我可以完全控制我的套接字及其选项。

问题是我试图让它对我来说有点容易,所以我试图使用'TCPSocket'类,女巫(我猜)并没有像'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”类手动编写整个套接字要容易得多。

4

1 回答 1

2

第二个参数sendflags参数。它被传递给send系统调用。您通常希望将其保留为 0。

在我的系统上,根据手册页,其他可能的标志是:

#define MSG_OOB        0x1  /* process out-of-band data */
#define MSG_DONTROUTE  0x4  /* bypass routing, use direct interface */
于 2009-10-18T01:24:54.443 回答