一、
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()