Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. boas pessoal, tou mesmu precisando duma grande ajuda! Preciso fazer um programa servidor/cliente em que o servidor receba as mensagens do cliente e as envie para todos os clientes ligados.

    já fiz a mensagem xegar ao servidor, mas não sei como fazer agora o resto! não sei como enviar para os clientes!
    aqui fica o meu código,

    servidor.py:

    Código :
    [B]# -*- coding: cp1252 -*-
    from socket import *
    import time
     
    # Set the socket parameters
    host = "localhost"
    port = 21567
    buf = 1024
    addr = (host,port)
     
    # Create socket and bind to address
    UDPSock = socket(AF_INET,SOCK_DGRAM)
    UDPSock.bind(addr)
     
    # Receive messages
    while 1:
        data,addr = UDPSock.recvfrom(buf)
        t=time.asctime(time.localtime())
        data="ás "+t+' '+data
        print data
        UDPSock.sendto(data,addr)
    # Close socket
    UDPSock.close()
    [/B]
    cliente.py:
    Código :
    [B]from socket import *
     
    # Set the socket parameters
    host = "localhost"
    port = 21567
    buf = 1024
    addr = (host,port)
    nome=raw_input('introduza nome:\t')
    # Create socket
    UDPSock = socket(AF_INET,SOCK_DGRAM)
     
    def_msg = "===introduza o texto===";
    print "\n",def_msg
     
    # Send messages
    while (1):
        data = raw_input(nome+'>> ')
        if not data:
            break
        else:
            data=nome+' diz:\t'+data
            UDPSock.sendto(data,addr)
     
    # Close socket
    UDPSock.close()
    [/B]
    fico aguardando respostas...agradecia imenso que me ajudassem...
    Última edição por uvitkaer; 08-12-2008 às 00:13.

  2. Olá colega!

    Alguns detalhes no seu programa:

    * Ele só está escutando em localhost (127.0.0.1)
    Aposto que você está rodando o cliente e o servidor na mesma máquina, certo? Como eu sei? Exatamente por causa do localhost. Se você tentar rodar o cliente em uma outra máquina você não vai conseguir se conectar no servidor porque somente a máquina tem acesso ao IP 127.0.0.1. Se não me engano, pro server escutar em todos os IPs basta usar a variável host assim:
    host=""

    * Ele não armazena os clientes que já estabeleceram comunicação com ele.
    Pra você conseguir mandar a mensagem para todos os clientes conectados, primeiro você teria que ter um cliente conectado!! Como assim?! Você está usando o protocolo UDP, ele não é orientado a conexão! Com isso você não tem certeza de quais 'clientes' ainda estão disponíveis. Não entendeu ne?! Vamos fazer uma comparação. Pensa em 2 pessoas se comunicando por carta. Você manda a carta mas não tem certeza nem que a pessoa vai ver essa carta! Você não sabe se ela se mudou ou não... Agora pensa em duas pessoas se comunicando por MSN, ou telefone. Você antes de mandar sua "mensagem" sabe se a pessoa está lá ou não!!
    Mas apesar de tudo tem como fazer o que você quer. É só manter um histórico de todos os clientes que se comunicaram com o servidor.

    * Por utilizar UDP, talvez você tenha alguns problemas
    Como disse acima, você não vai saber quais clientes vão estar "disponíveis" e com isso não tem como saber se o cliente recebeu a mensagem... esse é o grande problema do UDP. Pra contornar isso seria bom utilizar TCP, que é orientado a conexão.


    Como disse antes, tem como fazer, mas tem certas limitações... Se ainda estiver disposta a fazer isso com UDP avisa ai que te dou uma ajuda! Se quiser mudar pra TCP, ai vale a pena você dar uma pesquisada antes ok?!

    Ah, to movendo seu tópico pra área de Python...
    Qualquer coisa posta ai...



  3. ok, eu vou dar uma olhadela por TCP 1º, depois digo algum resultado. Obrigado pela ajuda!

  4. Um ótimo site que sempre me ajuda é o PythonBrasil.

    Achei lá uma "receita de bolo" de um servidor TCP. Talvez te ajude. O link é esse: SocketsBasico

    Qualquer dúvida posta ai...



  5. o tópico está interessante, já converti o meu cliente.py para TCP, e eproveitei o servidor la postado, mas o meu problema continua a ser o mesmo, que é como enviar as mensagens para os clientes, tou numa embrulhada e tenho que fazer o trabalho hoje até às 24h... :S sou um bokado nob nisto e por isso minha dificuldade...






Tópicos Similares

  1. Sockets em python
    Por erebus no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 22-11-2015, 16:53
  2. Gerenciador de arquivos em python(problema para instala-lo)
    Por flipeexpl no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 21-08-2004, 11:04
  3. Enviar Imagem atraves de Sockets em C
    Por Rurouni_Kenshin no fórum Linguagens de Programação
    Respostas: 3
    Último Post: 26-04-2004, 09:00
  4. E possivel criar um aplicativo, controle de caixa em python?
    Por no fórum Linguagens de Programação
    Respostas: 3
    Último Post: 20-04-2004, 06:42
  5. Sockets em C para Linux
    Por kappalinux no fórum Linguagens de Programação
    Respostas: 1
    Último Post: 06-09-2003, 11:13

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L