Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Thu Dec 27 15:36:40 2012
- @author: narasimhapbl.1863
- """
- import sys
- import os
- from PyQt4 import QtGui
- from PyQt4 import QtCore
- from PyQt4 import QtNetwork
- PORT = 9999
- SIZEOF_UINT32 = 4
- class Server(QtCore.QObject):
- def __init__(self,HOST):
- super(Server, self).__init__()
- self.tcpServer = QtNetwork.QTcpServer()
- self.tcpServer.listen(QtNetwork.QHostAddress(HOST), PORT)
- self.tcpServer.newConnection.connect(self.addConnection)
- def addConnection(self):
- try:
- self.clientConnection = self.tcpServer.nextPendingConnection()
- self.clientConnection.nextBlockSize = 0
- self.clientConnection.readyRead.connect(self.receiveMessage)
- self.clientConnection.disconnected.connect(self.removeConnection)
- self.clientConnection.error.connect(self.socketError)
- except Exception as ex:
- QtGui.QMessageBox.information(None,"Error", ex.message)
- def receiveMessage(self):
- if self.clientConnection.bytesAvailable() > 0:
- stream = QtCore.QDataStream(self.clientConnection)
- stream.setVersion(QtCore.QDataStream.Qt_4_2)
- if self.clientConnection.nextBlockSize == 0:
- if self.clientConnection.bytesAvailable() < SIZEOF_UINT32:
- return
- self.clientConnection.nextBlockSize = stream.readUInt32()
- if self.clientConnection.bytesAvailable() < self.clientConnection.nextBlockSize:
- return
- self.Message = stream.readQString()
- self.clientConnection.nextBlockSize = 0
- self.emit(QtCore.SIGNAL('DataReceived'))
- self.clientConnection.nextBlockSize = 0
- def removeConnection(self):
- pass
- def socketError(self):
- pass
- class Client(QtGui.QDialog):
- def __init__(self, parent=None):
- super(Client, self).__init__(parent)
- # Ititialize socket
- self.Clientsocket = QtNetwork.QTcpSocket()
- # Initialize data IO variables
- self.nextBlockSize = 0
- self.request = None
- self.Clientsocket.disconnected.connect(self.serverHasStopped)
- self.connect(self.Clientsocket,
- QtCore.SIGNAL("error(QAbstractSocket::SocketError)"),
- self.serverHasError)
- self.browser = QtGui.QTextBrowser()
- self.lineedit = QtGui.QLineEdit("Message to send")
- self.lineedit.selectAll()
- self.targetSystem = QtGui.QLineEdit("Enter target system")
- self.layout = QtGui.QVBoxLayout(self)#.win)
- self.layout.addWidget(self.browser)
- self.layout.addWidget(self.lineedit)
- self.layout.addWidget(self.targetSystem)
- self.lineedit.setFocus()
- self.lineedit.returnPressed.connect(self.SendData)
- self.setWindowTitle("Client")
- def SendData(self):
- TargetSystems = self.targetSystem.text().split(',')
- Msg2Send = self.lineedit.text()
- for TargetSystem in TargetSystems:
- self.Clientsocket.connectToHost(TargetSystem, PORT)
- self.Clientsocket.waitForConnected(-1)
- self.request = QtCore.QByteArray()
- stream = QtCore.QDataStream(self.request, QtCore.QIODevice.WriteOnly)
- stream.setVersion(QtCore.QDataStream.Qt_4_2)
- stream.writeUInt32(0)
- stream.writeQString(Msg2Send)
- stream.device().seek(0)
- stream.writeUInt32(self.request.size() - SIZEOF_UINT32)
- self.Clientsocket.write(self.request)
- self.nextBlockSize = 0
- self.request = None
- # self.Clientsocket.close()
- self.Clientsocket.disconnectFromHost()
- def serverHasStopped(self):
- self.Clientsocket.close()
- def serverHasError(self):
- self.ServerError = self.Clientsocket.errorString()
- self.emit(QtCore.SIGNAL('SocketError'))
- self.Clientsocket.close()
- def ShowMessage():
- QtGui.QMessageBox.information(None,"Message", server.Message)
- app = QtGui.QApplication(sys.argv)
- print os.getenv('computername')
- server = Server(os.getenv('computername'))
- client = Client()
- QtCore.QObject.connect(server,QtCore.SIGNAL("DataReceived"), ShowMessage)
- client.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement