Ir para conteúdo
Fórum Script Brasil

teonacio

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre teonacio

teonacio's Achievements

0

Reputação

  1. 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: 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() Imagem do erro: http://i.imgur.com/ai0HoCo.jpg
  2. teonacio

    Dúvida - Classes

    Olá. Estou com dúvida em relação a um código que fiz para o estudo de classes, e gostaria de ajuda para resolver um erro. Segue abaixo: calculo.h #ifndef CALCULO_H #define CALCULO_H class Calculo{ private: int x; int y; int z; public: void setXYZ(int mx,int my,int mz); }; #endif // CALCULO_H calculo.cpp #include "calculo.h" void Calculo::setXYZ(int mx,int my,int mz){ x = mx; y = my; z = mz; } main.cpp #include <iostream> #include "calculo.h" using namespace std; int main(){ Calculo C1; C1.setXYZ(2,3,4); return 0; } Tanto o codeblocks quanto o devc++ retornam o seguinte erro: undefined reference to 'Calculo::setXYZ(int, int, int)' Estou tentando a horas resolver, mas n encontro a solucao.
×
×
  • Criar Novo...