在原始套筒中连接功能
Connect function in raw socket?
我正在尝试在C中启动TCP三向式弹药。但是,我想到connect
可能已经在建立了这种连接或以某种方式进行干扰。connect
是否每当插座上都有IPPROTO_TCP
选项设置时会自动建立TCP连接?
是的,IPPROTO_TCP
创建了TCP套接字。要使用RAW套接字,您需要将SOCK_RAW作为第二个参数传递给socket
函数。
per msdn文档:
TCP/IP RAW插座
应用程序创建了
SOCK_RAW
类型的套接字,该套接字可用于发送和接收数据。在SOCK_RAW
类型的套接字上发送或接收的所有数据包都被视为无连接的套接字上的数据报。以下规则适用于
SOCK_RAW
插座的操作:...
收到的数据报被复制到满足以下条件的所有
SOCK_RAW
插座中:...
- 如果为套接字定义了外国地址,则应对应于收到数据报的IP标头中指定的源地址。应用程序可以通过调用
connect
或WSAConnect
函数来指定外国IP地址。如果未为套接字指定外国IP地址,则数据报将被复制到套接字中,无论收到的数据报的IP标头中的源IP地址如何。
这意味着原始插座本质上是无连接的插座,因此connect()
不会在原始插座上执行3路TCP握手。它只是将一个远程地址与套接字关联,类似于connect()
与UDP(SOCK_DGRAM
)套接字一起工作的方式。
更重要的是:
原始插座的限制
...
TCP数据无法通过原始插座发送。 ...
不允许使用
IPPROTO_TCP
协议的RAW套接字来调用bind
函数。
因此,您不能将IPPROTO_TCP
与RAW套接字开始使用,因此在RAW TCP套接字上的connect()
行为问题是没有的。IPPROTO_TCP
只能与真实的TCP(SOCK_STREAM
)插座一起使用:
ipproto_tcp
6传输控制协议(TCP)。当
时,这是可能的值af
参数为AF_INET
或AF_INET6
并且type
参数为SOCK_STREAM
。
- 升压信号2将插槽传递到成员功能以断开连接
- QT 连接没有要调用的匹配功能
- Qt - 没有用于连接的匹配功能
- 如何将此功能连接到我的连接按钮?
- 套接字连接在主功能内部但不在功能内部
- C++/Qt项目中的连接功能中不存在插槽?(已经重新运行了制作)
- 将类功能连接到按钮.(QT C )
- 连接四个C 下降功能无法正常工作
- 是否可以将一个类别的插槽或常规功能从一个类连接到另一个类的插槽或常规功能?(QT)
- 在原始套筒中连接功能
- 连接功能BlackBerry-10中的错误
- WXWIDGETS连接多个功能
- 如何连接到具有通用功能/插槽的boost::信号
- 检查连接4的获胜功能对角线是否不工作
- QObject连接功能
- C++如何将功能连接到程序
- 如何使用 Windows 本机 Wifi 功能连接到请求网络安全密钥的 Wifi
- 为什么我的连接没有触发信号功能
- 呼叫连接没有匹配功能-Qt 5.5
- 如何启用MongoDB C++驱动程序自动连接功能