(python)使用tcp服務器端時,出現錯誤AttributeError: 'tuple' object has no attribute 'recv'


一、

 

1、運行代碼:

 

from socket import *
# 創建套接字
tcp_server_socket=socket(AF_INET,SOCK_STREAM)
# 綁定本地信息
local_addr=('',7778)

tcp_server_socket.bind(local_addr)
# 使用socket創建的套接字默認屬性是主動,通過listen使其變為被動的,這樣便可以接收別人的鏈接
tcp_server_socket.listen(128)
# 如果有新的客戶端類鏈接服務器,則產生一個新的套接字為此客戶端服務
# client_socket是用來給這個客戶端服務
# tcp_server_socket可以省下來等待新的客戶端的鏈接 
client_socket=tcp_server_socket.accept()
# 接收數據
recv_data=client_socket.recv(1024)
print("接收的數據:",recv_data.decode("gbk"))

client_socket.send("我已收到你的信息.".encode("gbk"))

client_socket.close()

 

 

 

 

 

2、運行錯誤截圖:

      

 

二、

 

錯誤原因: tcp_server_socket.accept()的返回值是一對(conn, address),其中conn是一個新的套接字對象,可用於在連接上發送和接收數據,地址是綁定到連接另一端的套接字的地址。

 

 

解決方法:client_socket,clientAddr=tcp_server_socket.accept()

完整代碼:

 

from socket import *
# 創建套接字
tcp_server_socket=socket(AF_INET,SOCK_STREAM)
# 綁定本地信息
local_addr=('',7778)

tcp_server_socket.bind(local_addr)
# 使用socket創建的套接字默認屬性是主動,通過listen使其變為被動的,這樣便可以接收別人的鏈接
tcp_server_socket.listen(128)
# 如果有新的客戶端類鏈接服務器,則產生一個新的套接字為此客戶端服務
# client_socket是用來給這個客戶端服務
# tcp_server_socket可以省下來等待新的客戶端的鏈接 
client_socket,clientAddr=tcp_server_socket.accept()
# 接收數據
recv_data=client_socket.recv(1024)
print("接收的數據:",recv_data.decode("gbk"))

client_socket.send("我已收到你的信息.".encode("gbk"))

client_socket.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM