estou desenvolvendo (para estudo apenas) um código para um chat em python, e me deparei com um erro durante a comunicação cliente-servidor, gostaria de uma orientação acerca do mesmo, visto que não consigo identificar uma soluçao. Segue o código e a imagem do erro.
Servidor:
import threading # threads
from socket import * # sockets
clientes_conn = [] # Lista de conexões/clientes
clientes_name = [] # Lista dos nomes das conexões
class minhaThread (threading.Thread):
def __init__(self, threadID, threadName, connectionSocket):
threading.Thread.__init__(self)
self.id = threadID
self.name = threadName
self.conn = connectionSocket
def run(self):
chat_geral(self.conn,self.name)
'''
param == 1 => Mensagem do sistema
param == 2 => Mensagem do cliente
'''
def enviar_mensagem(msg, name, param):
for conn in clientes_conn:
conn.send(msg)
if param == 1:
print msg
else:
print "("+name+"): "+msg
def adicionar_cliente(connectionSocket, _id):
while 1:
message2 = connectionSocket.recv(1024)
if message2 == "":
continue
if message2 in clientes_name:
serverSocket.send("O nome informado está sendo usado por um cliente atualmente.\n")
continue
clientes_conn.append(connectionSocket)
clientes_name.append(message2)
success = "Cliente '"+str(message2)+"' conectado com sucesso!"
enviar_mensagem(success, message2, 1)
# Entra no terceiro while 1
thread = minhaThread(_id, message2, connectionSocket).start()
clientes_conn.remove(connectionSocket)
clientes_name.remove(message2)
connectionSocket.close()
break
def chat_geral(connectionSocket, name):
while 1:
msg = connectionSocket.recv(1024)
if msg == "Sair" or msg == "sair":
sair = "Cliente "+name+" está saindo do chat."
enviar_mensagem(sair, name, 1)
break
enviar_mensagem(msg, name, 2)
serverName = 'localhost'
serverPort = 8080
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
serverSocket.bind((serverName,serverPort))
serverSocket.listen(1)
print "Servidor TCP esperando conexoes na porta %d ..." % (serverPort)
id_padrao = 0
while 1:
connectionSocket, address = serverSocket.accept()
print "Cliente "+str(address[1])+" tentando se conectar..."
adicionar_cliente(connectionSocket, id_padrao)
id_padrao += 1
serverSocket.close()
Cliente:
from socket import * # sockets
import threading # threads
class minhaThread (threading.Thread):
def __init__(self, threadName, clientSocket):
threading.Thread.__init__(self)
self.name = threadName
self.conn = clientSocket
def run(self):
chat_geral(self.name,self.conn)
def conectar_chat(clientSocket):
while 1:
msg = raw_input("Digite seu nome: ")
clientSocket.send(msg)
message = clientSocket.recv(1024)
print message
if message.find("conectado com sucesso") != -1:
thread = minhaThread(msg,clientSocket).start()
break
def chat_geral(name,clientSocket):
while 1:
msg = raw_input("Digite (mensagem/comando): ")
clientSocket.send(msg)
msg2 = clientSocket.recv(1024)
if msg2 == "saindo do chat" and msg.find(name) != -1:
print "Desconectando do server."
break
print msg2
# definicao das variaveis
serverName = 'localhost' # ip do servidor
serverPort = 8080 # porta a se conectar
clientSocket = socket(AF_INET,SOCK_STREAM) # criacao do socket TCP
clientSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
clientSocket.connect((serverName,serverPort)) # conecta o socket ao servidor
while 1:
conectar_chat(clientSocket)
break
clientSocket.close()
Pergunta
teonacio
Olá,
estou desenvolvendo (para estudo apenas) um código para um chat em python, e me deparei com um erro durante a comunicação cliente-servidor, gostaria de uma orientação acerca do mesmo, visto que não consigo identificar uma soluçao. Segue o código e a imagem do erro.
Servidor:
Cliente:
Imagem do erro:
http://i.imgur.com/ai0HoCo.jpg
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.