python套接字错误:AF_INET地址必须是元组,而不是str

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python套接字错误:AF_INET地址必须是元组,而不是str相关的知识,希望对你有一定的参考价值。

我有这个简短的程序:

import sys
import socket

target = "google.co.uk"
port = 443
print(target)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(target)
print("successfull connection to: " + target)

当我运行代码时,我得到:

    s.connect(target)
TypeError: getsockaddrarg: AF_INET address must be tuple, not str

当我尝试将行更改为:s.connect(target,443)时,我也遇到了错误:

    s.connect(target,443)
TypeError: connect() takes exactly one argument (2 given)

问题是什么?

答案

函数作为参数接收的是元组,因此应该将元组作为参数给出。意思是f(a,b)f((a,b))调用函数

所以,我们修复你的代码:

import sys
import socket

target = "google.co.uk"
port = 443
print(target)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target, port))
print("successfull connection to: " + target)

以上是关于python套接字错误:AF_INET地址必须是元组,而不是str的主要内容,如果未能解决你的问题,请参考以下文章

Python 中的TCP socket 写法

UDP-TCP介绍与区别

套接字编程 - 如何连接远程地址

Python网络编程

Python—网络编程之tcp编程

如何使用 recvfrom 获取 AF_INET6 套接字的地址