python socket error: AF_INET address must be tuple, not str
python socket error: AF_INET address must be tuple, not 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)
我遇到了同样的错误。在 PyMySQL 的 connections.py 文件中,有一个名为 connect()
的函数与
行
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.settimeout(self.connect_timeout)
sock.connect(self.unix_socket)
一个Windows用户将得到
AttributeError: module 'socket' has no attribute 'AF_UNIX'
到fix it应该把第一行改成
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
这将得到
File "C:\Users\tiago\Desktop\dev\venv\lib\site-packages\pymysql\connections.py", line 609, in connect
sock.connect(self.windows_socket)
TypeError: connect(): AF_INET address must be tuple, not str
在的基础上,只需要将第三行改为
sock.connect((self.unix_socket))
所以你应该
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(self.connect_timeout)
sock.connect((self.unix_socket))
我有这个小程序:
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)
我遇到了同样的错误。在 PyMySQL 的 connections.py 文件中,有一个名为 connect()
的函数与
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.settimeout(self.connect_timeout)
sock.connect(self.unix_socket)
一个Windows用户将得到
AttributeError: module 'socket' has no attribute 'AF_UNIX'
到fix it应该把第一行改成
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
这将得到
File "C:\Users\tiago\Desktop\dev\venv\lib\site-packages\pymysql\connections.py", line 609, in connect
sock.connect(self.windows_socket)
TypeError: connect(): AF_INET address must be tuple, not str
在
sock.connect((self.unix_socket))
所以你应该
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(self.connect_timeout)
sock.connect((self.unix_socket))