Программирование чата с помощью PyQt и Socket [Стандартная библиотека]

Я написал программу, которая часто встречается в клиентском разделе, и я думаю, что ошибка связана сsocket функция вclient.py, Что я должен делать?

server.py:

# This is my server code , this code has no problems
import asyncore
import socket

clients = {}

class MainServerSocket(asyncore.dispatcher):
    def __init__(self, port):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.bind(('',port))
        self.listen(5)
    def handle_accept(self):
        newSocket, address = self.accept( )
        clients[address] = newSocket
        print "Connected from", address
        SecondaryServerSocket(newSocket)

class SecondaryServerSocket(asyncore.dispatcher_with_send):
    def handle_read(self):
        receivedData = self.recv(8192)
        if receivedData:
            every = clients.values()
            for one in every:
                one.send(receivedData+'\n')
        else: self.close( )
    def handle_close(self):
        print "Disconnected from", self.getpeername( )
        one = self.getpeername( )
        del clients[one]

MainServerSocket(21567)
asyncore.loop( )

client.py:

from PyQt4 import QtGui , QtCore
from socket import *
import thread
import sys

HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.socket()

        roomLabel = QtGui.QLabel('room')

        self.browser = QtGui.QTextBrowser()
        self.browser.backwardAvailable

        self.textEdit = QtGui.QTextEdit()
        self.textEdit.setMaximumSize(QtCore.QSize(400,60))
        #4 edit line
        self.connect(self.browser, QtCore.SIGNAL("returnPressed()"),self.callback)

        SendButton = QtGui.QPushButton('Send')
        SendButton.setMaximumSize(QtCore.QSize(400,60))
        SendButton.clicked.connect(self.callback)




        layoutINlayout = QtGui.QHBoxLayout()
        layoutINlayout.addWidget(self.textEdit)
        layoutINlayout.addWidget(SendButton)


        widget = QtGui.QWidget()
        self.setCentralWidget(widget)

        self.layout = QtGui.QVBoxLayout()
        self.layout.addWidget(self.browser)

        mainwindow = QtGui.QVBoxLayout()
        mainwindow.addLayout (self.layout )
        mainwindow.addLayout (layoutINlayout )

        widget.setLayout(mainwindow)
        self.setWindowFlags(QtCore.Qt.WindowTitleHint )

    def callback(self, event):

        message = self.textEdit.toPlainText()
        tcpCliSock.send(message)



    def add(self, data):
        self.browser.setText(data)


    #i think the error comes from socket func:
    def socket(self):

        def loop0():
            while 1:
                print '1'
                data = tcpCliSock.recv(BUFSIZE)
                if data: self.add(data)

        thread.start_new_thread(loop0, ())


if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    app.setStyle('chat')


    window = MainWindow()
    window.setWindowTitle("pro IJ cracker v2")
    window.setWindowIcon(QtGui.QIcon("img/go.png"))
    window.show()
    sys.exit(app.exec_())

Ответы на вопрос(1)

Ваш ответ на вопрос