linux下创建socket时如何实现指定网口

linux下创建socket时如何实现指定网口,第1张

原理上只有 raw_socket 应该设置网口,正常的 socket 会根据路由来选择出口。

如果需要指定网口,需要设置 SO_BINDTODEVICE,步骤如下:

填写结构体 struct ifreq ifr 的 ifr.ifr_name 为指定的网口,如 "eth1"

setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr))

另外,如果只是需要进行测试,不防直接构包,用 libpcap 等库来进行发送。而不要用系统的 socket 库来发送。

方法/步骤

1、进入linux,使用“ cat /etc/services ”命令,可以查看所有服务默认的端口列表信息。

2、使用“netstat”命令,查看正在连接的端口【连接】列表信息。

3、使用“nestat -a”命令,查看所有服务端口【监听、连接】列表信息。

4、套接字的种类除了t(TCP)、u(UDP)之外,还有w(RAW)、x(UNIX)套接字。

5、使用" netstat -ap"查看所有服务端口和对应的程序名称。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8448843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存