Форум сайта python.su
Здравствуйте, у меня появилась необходимость написать графическое приложение, которое выступало бы сервером для консольного клиента. В качестве графической библиотеки была выбрана QT4, пример сервера брал из книги: http://www.qtrac.eu/pyqtbook26.tar.gz (18 глава)
class Socket(QTcpSocket):
def __init__(self, parent=None):
super(Socket, self).__init__(parent)
self.connect(self, SIGNAL("readyRead()"), self.readRequest)
self.connect(self, SIGNAL("disconnected()"), self.deleteLater)
self.nextBlockSize = 0
def readRequest(self):
stream = QDataStream(self)
stream.setVersion(QDataStream.Qt_4_2)
if self.nextBlockSize == 0:
if self.bytesAvailable() < SIZEOF_UINT16:
return
self.nextBlockSize = stream.readUInt16()
if self.bytesAvailable() < self.nextBlockSize:
return
action = QString()
room = QString()
date = QDate()
stream >> action
if action in ("BOOK", "UNBOOK"):
stream >> room >> date
bookings = Bookings.get(date.toPyDate())
uroom = unicode(room)
def sendError(self, msg):
reply = QByteArray()
stream = QDataStream(reply, QIODevice.WriteOnly)
stream.setVersion(QDataStream.Qt_4_2)
stream.writeUInt16(0)
#stream << QString("ERROR") << QString(msg)
stream.writeString("Helloo")
stream.device().seek(0)
stream.writeUInt16(reply.size() - SIZEOF_UINT16)
self.write(reply)
import socket
import sys
HOST, PORT = "localhost", 9407
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect to server and send data
sock.connect((HOST, PORT))
sock.send("BOOK")
# Receive data from the server and shut down
received = sock.recv(1024).strip("^K\000\000\000^G")
sock.close()
print "Sent: %s" % data
print "Received: %s" % received
Офлайн
мды :(
а) вопрос слишком глуп чтобы на него отвечать
б) ни кто не работал с QTcpServer
Офлайн