You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Socket服务端报错:'function' object has no attribute 'send'

Python TCP服务端运行AttributeError: 'function' object has no attribute 'send' 修复

报错现象

运行编写的TCP服务端代码后,首先输出如下异常内容:

Received Connection From <bound method socket.accept of <socket.socket fd=300, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.1.158', 444)>>

随后抛出Traceback回溯:

Traceback (most recent call last):
File "c:\Users\WaffWaffles\Desktop\Server-TCP-Test\server.py", line 19, in <module>
clientsocket.send(message.encode('ascii'))
AttributeError: 'function' object has no attribute 'send'

错误原因

代码存在三处核心写法错误:

  • 调用accept方法时遗漏括号:serversocket.accept是对方法本身的引用,赋值后得到的是函数对象,不会执行等待连接的逻辑,因此后续调用send方法时会提示函数对象不存在该属性,打印address时也会输出方法对象的描述信息而非客户端地址。
  • 未正确接收accept()的返回值:socket.accept()方法的返回值是包含客户端套接字对象、客户端连接地址的二元元组,原代码分两次调用accept分别赋值,会触发两次连接等待,逻辑完全错误。
  • 关闭连接的调用对象错误:连接处理完成后需要调用当前连接对应的clientsocket对象的close()方法关闭连接,原代码直接调用socket.close()属于错误调用。

修复后完整代码

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname('192.168.1.158')
port = 444

serversocket.bind((host, port))
serversocket.listen(3)

while True:
    # 加括号执行accept方法,同时接收元组形式的两个返回值
    clientsocket, address = serversocket.accept()
    print("Received Connection From %s" % str(address))

    message = 'Hello! Thank you for connecting to the Server' + "\r\n"
    clientsocket.send(message.encode('ascii'))

    # 调用当前客户端连接对象的close方法关闭连接
    clientsocket.close()

内容的提问来源于stack exchange,提问作者user4963654

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:24:21