Go to the documentation of this file.00001 #include "serversocket.h"
00002 #include <QDebug>
00003
00004 ServerSocket::ServerSocket(int socketDescriptor, QObject *parent)
00005 : QObject(parent)
00006 {
00007 m_bSendingData = false;
00008
00009 if (!socket.setSocketDescriptor(socketDescriptor)) {
00010 qCritical() << socket.errorString();
00011 return;
00012 }
00013
00014 connect(&socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
00015 connect(&socket, SIGNAL(disconnected()), this, SLOT(clientDisconnected()));
00016 }
00017
00018 QHostAddress ServerSocket::peerAddress() const
00019 {
00020 return socket.peerAddress();
00021 }
00022
00023 void ServerSocket::readyRead()
00024 {
00025 QList<QByteArray> cmds = socket.readAll().split('\n');
00026 for (int i = 0; i < cmds.count(); i++){
00027 QString cmd = cmds[i];
00028 emit read(cmd);
00029 }
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 }
00043
00044 void ServerSocket::clientDisconnected()
00045 {
00046 qDebug() << "disconnected.";
00047 emit disconnected();
00048 }
00049
00050 void ServerSocket::SendStart()
00051 {
00052 _Send( "BEGIN\n\n" );
00053 m_bSendingData = true;
00054 }
00055
00056 void ServerSocket::SendData( const void *data, int len )
00057 {
00058 if ( m_bSendingData ){
00059 _Send( QString("DATA %1\n\n").arg(len) );
00060 _Send( data, len );
00061 }
00062 }
00063
00064 void ServerSocket::SendEnd()
00065 {
00066 if ( m_bSendingData ){
00067 _Send( "END\n\n" );
00068 m_bSendingData = false;
00069 }
00070 }
00071
00072 void ServerSocket::SendCancel()
00073 {
00074 if ( m_bSendingData ){
00075 _Send( "CANCEL\n\n" );
00076 m_bSendingData = false;
00077 }
00078 }
00079
00080 void ServerSocket::SendKeyPressed( int val )
00081 {
00082 _Send( QString("KEY_PRESSED %1\n\n").arg(val) );
00083 }
00084
00085 void ServerSocket::SendEpdOn()
00086 {
00087 _Send( "EPD_ON\n\n" );
00088 }
00089
00090 void ServerSocket::SendEpdOff()
00091 {
00092 _Send( "EPD_OFF\n\n" );
00093 }
00094
00095 void ServerSocket::_Send( const QString& str )
00096 {
00097 _Send( str.toAscii(), str.length() );
00098 }
00099
00100 void ServerSocket::_Send( const void *data, int len )
00101 {
00102 socket.write((const char*)data, len);
00103 }