class Server
Public Class Methods
new(parent = nil)
click to toggle source
Calls superclass method
# File examples/network/fortuneserver/server.rb, line 30 def initialize(parent = nil) super(parent) @statusLabel = Qt::Label.new @quitButton = Qt::PushButton.new(tr("Quit")) @quitButton.autoDefault = false @tcpServer = Qt::TcpServer.new(self) if !@tcpServer.listen Qt::MessageBox.critical(self, tr("Fortune Server"), tr("Unable to start the server: %s." % @tcpServer.errorString)) close() return end @statusLabel.text = tr("The server is running on port %d.\nRun the Fortune Client example now." % @tcpServer.serverPort) @fortunes = [] @fortunes << tr("You've been leading a dog's life. Stay off the furniture.") << tr("You've got to think about tomorrow.") << tr("You will be surprised by a loud noise.") << tr("You will feel hungry again in another hour.") << tr("You might have mail.") << tr("You cannot kill time without injuring eternity.") << tr("Computers are not intelligent. They only think they are.") connect(@quitButton, SIGNAL(:clicked), self, SLOT(:close)) connect(@tcpServer, SIGNAL(:newConnection), self, SLOT(:sendFortune)) buttonLayout = Qt::HBoxLayout.new do |b| b.addStretch(1) b.addWidget(@quitButton) end self.layout = Qt::VBoxLayout.new do |m| m.addWidget(@statusLabel) m.addLayout(buttonLayout) end self.windowTitle = tr("Fortune Server") end
Public Instance Methods
sendFortune()
click to toggle source
# File examples/network/fortuneserver/server.rb, line 72 def sendFortune block = Qt::ByteArray.new outf = Qt::DataStream.new(block, Qt::IODevice::WriteOnly) outf.version = Qt::DataStream::Qt_4_0 outf << 0 # Write a 4 byte integer outf << @fortunes[rand(@fortunes.length)] outf.device.seek(0) outf << (block.length - 4) # 4 bytes is the size of an integer clientConnection = @tcpServer.nextPendingConnection() connect(clientConnection, SIGNAL(:disconnected), clientConnection, SLOT(:deleteLater)) clientConnection.write(block) clientConnection.disconnectFromHost end