У меня есть ошибка AttributeError, в которой говорится: «AttributeError: объект 'socket' не имеет атрибута 'upper'». Я почти уверен, что создал и установил соединение правильно, и все еще не уверен, что делать после консультации с документацией по сокету.
Спасибо.
import socket
from _thread import *
import threading
print_lock = threading.Lock()
list_of_clients = []
def threaded(data, addr, s):
s.sendto(data.upper(), addr)
while True:
message = s.recv(1024)
if not message:
print('Bye')
print_lock.release()
break
message = message.upper()
print("Sending message to " + addr[0])
s.sendto(message, addr)
data.close()
def Main():
list_of_clients = []
serverName = 'localhost'
serverPort = 12000
with socket.socket(socket.AF_INET , socket.SOCK_STREAM) as serverSocket:
serverSocket.connect((serverName, serverPort))
while True :
print('Ready to ping...')
data, addr = serverSocket.accept()
print(type(data))
print_lock.acquire()
print("Client connected ip:<" + str(addr) + ">")
start_new_thread(threaded, (data, addr, serverSocket))
print("Continue")
if __name__ == '__main__':
Main()






Проблема в этой строке:
s.sendto(data.upper(), addr)
data определяется здесь:
data, addr = serverSocket.accept()
Метод accept возвращает 2-кортеж, где первый элемент - это объект сокета, способный отправлять и получать данные.
Поэтому вместо передачи serverSocket в threaded вы должны передать первый элемент 2-tuple, а также любые данные, которые вы хотите отправить.