Cha*_*ina 1 c c++ sockets raw-sockets
我用:
int syn_socket = (AF_INET, SOCK_RAW, IPPROTO_RAW);
Run Code Online (Sandbox Code Playgroud)
创建一个原始套接字,我有root权限.然后:
int on = 1;
int rc = setsockopt(syn_socket, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));
Run Code Online (Sandbox Code Playgroud)
setsockopt返回-1,errno是EBADF.这是日志:
[2016-12-05 11:02:34 UTC] [syn.cpp:266] [syn]创建原始套接字(255)
[2016-12-05 11:02:34 UTC] [syn.cpp:220] [ send_syn_packet] setsockopt(255)失败.(Ba d文件描述符)
[2016-12-05 11:02:34 UTC] [syn.cpp:292] [syn]发送syn包失败.
int syn_socket = (AF_INET, SOCK_RAW, IPPROTO_RAW);
Run Code Online (Sandbox Code Playgroud)
正如@DaV已经暗示的那样,这不是在呼唤socket().socket那条线上没有这个词.它编译,因为它仍然有效C.如果你写:
int a = (1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
结果是a设置为值3.您syn_socket的设置为IPPROTO_RAW,相当于255,这实际上很可能不是有效的描述符.
你需要打电话socket():
int syn_socket = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |