我有一个具有两个不同网络接口的服务器,每个接口都有不同的IP地址.如何创建一个套接字以便它能够输出特定的IP地址?
我更喜欢python的例子,但问题是语言不可知,所以请开枪.
编辑:请不要给我"你不能"作为答案.我的意思是,它是一台电脑.我可以做任何我喜欢的事情,例如 - 我可以以编程方式禁用我不想要的一个界面.我正在寻找更漂亮的东西.
您当然可以将套接字绑定到特定设备.
我不知道如何在python中做到这一点,但是使用berkeley socket api(在C中)你需要setsockopt()
使用该选项进行调用SO_BINDTODEVICE
.
传入一个类型的接口描述符struct ifreq
.理想情况下,您将通过使用ioctl()
和请求SIOCGIFINDEX
- 获取接口描述符的内容 - 将接口的名称(例如,eth0)作为参数传递.
编辑:刚刚快速搜索并在python中找到了socket文件的这个文档.setsockopt()
就是其中之一.
只需要注意一点 - 我真正需要的是绑定到特定的IP,并且只是为了完整性,解决方案是在创建后绑定套接字.python中的源代码:
import socket s = socket.socket() s.bind(("127.0.0.1", 0)) s.connect(("321.12.131.432", 80))