Witam!
Postanowiłem napisać skrypt, prosty czat sieciowy. Serwer się kompiluje, klient również, tylko jest jeden problem. Mianowicie : gdy serwer otrzymuje połączenie wyrzuca błąd "Broken Pipe". Nie mam pojęcia, o co chodzi, bardzo byłbym wdzięczny za wszelką pomoc. Poniżej listingi:

Kod błędu:

Traceback (most recent call last):
  File "serwer.py", line 22, in <module>
    czat.interpretuj(wiadomosc, addr)
  File "/home/mateusz/Desktop/Python/Czat/CCzat.py", line 31, in interpretuj
    self.wylogowanie(adres)
  File "/home/mateusz/Desktop/Python/Czat/CCzat.py", line 70, in wylogowanie
    socket.sendto("3", adres_ip)
socket.error: [Errno 32] Broken pipe
 

Plik: serwer.py

#!/usr/bin/env python

from CCzat import *
from socket import *
import time

#Komunikat powitalny
print "MiniCzat - Serwer."

s = socket(AF_INET, SOCK_STREAM)
s.bind(('', 7987))
s.listen(5)

czat = CCZat(s)


while 1:
    client, addr = s.accept()
    wiadomosc = client.recv(1024)
    print "Polaczenie przychodzace z ", addr[0]
    print "Wiadomosc: " + wiadomosc
    czat.interpretuj(wiadomosc, addr)
    client.close()
    

s.close()

Plik: CCZat.py

#!/usr/bin/env python

from socket import *
import time

class CCZat:
    
    #Lista klientow podlaczonych do serwera
    adresy = []
    
    #Klient - adres ip slownik
    adr_nick = {}
    
    def __init__(self, socket2):
        global socket
        socket = socket2
    
    def interpretuj(self, komenda, adres):
        
        #Kody komend
        #0 - wiadomosc
        #1 - logowanie
        #2 - wylogowanie
        #3 - blad
        #4 - logowanie pomyslne
        #5 - wylogowanie pomyslne
        if komenda[1] == "0":
            self.wiadomosc(komenda[1:len(komenda)-1], adres)
        else:
            if komenda[1] == "1":
                self.logowanie(komenda[1:len(komenda)-1], adres)
            else:
                self.wylogowanie(adres)
                
    def wiadomosc(self, tekst, adres_ip):
        
        nadawca = adr_nick[adres_ip]
        
        for i in adresy:
            socket.sendto("0[" + nadawca + "]" + tekst, i)
            
    def logowanie(self,nick, adres):
        
        try:
            if adr_nick.has_key(adres):
                raise Exception, "Uzytkownik jest juz polaczony z serwerem !"
            
            def sprawdz(adr):
                if adr_nick[adr] == nick:
                    raise Exception, "Uzytkownik o nicku " + nick + " juz jest polaczony z tym serwerem. Prosze wybrac inny nick!"
                
            map(sprawdz, adr_nick)
        except Exception, e:
            socket.sendto("3", adres)
        else:
            adresy.append(adres)
            adr_nick[adres] = nick
            socket.sendto("4", adres)
            
    def wylogowanie(self,adres_ip):
        
        try:
            if adresy.count(adres_ip) == 1:
                adresy.remove(adres_ip)
            else:
                raise blad, "Nie mozna wylogowac, klient nie istnieje!"       
            if adr_nick.has_key(adres_ip):
                del adr_nick[adres_ip]
            else:
                raise blad, "Nie mozna wylogowac, klient nie istnieje!"
        except:
            socket.sendto("3", adres_ip)
        else:
            socket.sendto("5", adres_ip)
    
    
 

Plik: klient.py

 
#!/usr/bin/env python

from socket import *

print "MINICZAT"

#czy uzytkownik zalogowal sie poprawnie ?
logowanie = 0

ip_serwer = raw_input("Podaj ip serwera: ")

s = socket()
s.connect((ip_serwer, 7987))

while logowanie != 1:
    nick = raw_input("Podaj swoj nick: ")
    s.send("1"+nick)
    odpowiedz = s.recv(1024)
    if odpowiedz == "4":
        logowanie = 1
    else:
        print "Serwer zwrocil blad: " + odpowiedz[1:len(odpowiedz)-1]
    

Z góry dziękuję za każdą pomoc !