何时使用python socket.create\u连接的源\u地址?
有任何示例显示源地址的用法吗?如下所示: 如果提供,何时使用python socket.create\u连接的源\u地址?,python,sockets,Python,Sockets,有任何示例显示源地址的用法吗?如下所示: 如果提供,source\u address必须是一个2元组(主机,端口),以便在连接之前将套接字绑定为其源地址。如果主机或端口分别为“”或0,则将使用操作系统默认行为 换句话说,当您需要在连接之前绑定套接字时,可以使用它。如果你不知道为什么你需要这样做,你不需要这样做。但这里有一个简单的例子:FTP服务器需要能够在与传入控制连接相同的接口上建立传出数据连接。您可以通过绑定控件连接具有的相同本地地址来实现这一点。因此: socket.create_conn
source\u address
必须是一个2元组(主机
,端口
),以便在连接之前将套接字绑定为其源地址。如果主机或端口分别为“”或0,则将使用操作系统默认行为
换句话说,当您需要在连接之前绑定套接字时,可以使用它。如果你不知道为什么你需要这样做,你不需要这样做。但这里有一个简单的例子:FTP服务器需要能够在与传入控制连接相同的接口上建立传出数据连接。您可以通过绑定控件连接具有的相同本地地址来实现这一点。因此:
socket.create_connection(address[, timeout[, source_address]])
我的问题很清楚。现在,我知道答案了 我知道如何检查源代码,我阅读了方法套接字的源代码。创建连接(地址[,超时[,源地址]),我要求提供源地址,这都是关于绑定的。 我有这个问题是因为我是一个初学者,我没有socket编程的背景知识,所以我找到了一本名为《Python网络编程基础》的书来阅读。在第三章TCP,每个会话一节中,我得到了它并做了一个例子
def make_data_conn(controlconn, port, timeout):
return socket.create_connection((controlconn.getpeername()[0], port),
timeout,
(controlconn.getsockname()[0], 0))
您可以切换两个测试函数以查看差异。无需向我显示文档link@metaphy:即使您已经阅读了文档并将其打开,问题和答案也应该对将来搜索类似问题的其他人有所帮助,“这些人中的许多人需要doc链接。但是这个问题被否决了,所以这不是一个有用的问题。”梅塔菲奇怪的态度。为了使答案更有用,文档链接总是很有用的。@metaphy,为什么答案因为被否决的问题而没有帮助?!这不是对任何事情的回答,更不用说你的问题了。我会在我了解所有情况后回答。好吧……但在那之前,不要把无用和/或令人困惑的东西弄得乱七八糟。删除你的答案,并在你准备好写答案时创建一个新的答案。
import socket
baidu = ('www.baidu.com', 80)
zero = ('0.0.0.0', 9001)
def test(addr, src_addr):
try:
sock = socket.create_connection(addr, 3, src_addr)
print sock.getsockname()
print
sock.sendall('GET / HTTP/1.1\r\n\r\n')
data = sock.recv(1024)
print data
finally:
try:
sock.close()
except:
pass
test(baidu, zero)
#test(baidu, None)