Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时使用python socket.create\u连接的源\u地址?_Python_Sockets - Fatal编程技术网

何时使用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)