2014-10-16 77 views
0

編寫一個簡單的應用程序與PC Qt應用程序與Android設備進行通信。在Qt套接字寫入數據未到達服務器

在我的應用程序的初始啓動,成功地能夠連接到Android應用程序。

我的信號:

connect(socket, SIGNAL(connected()),this, SLOT(connected())); 
connect(socket, SIGNAL(readyRead()),this, SLOT(readyRead())); 

void MyApp::connected() 
{ 
    qDebug() << "connected..."; 
    socket->write("Init Connection \n"); 
    socket->flush(); 
} 

void MyApp::readyRead() 
{ 
    QString readData; 
    qDebug() << "reading..."; 

    while(socket->bytesAvailable()) 
     readData= socket->readAll(); 

    qDebug()<<"Read Finished"; 

    if(socket->isWritable()) 
    { 
     qDebug()<<"Yes Writable"; 
     socket->write("New Data"); 
     socket->flush(); 

    } 
    else 
     qDebug()<<"No Writable"; 
} 

connected方法socket->write成功和Android應用程序能夠讀取數據,但在readyReadsocket->write將返回寫入的字節數,但沒有達到的Android應用程序。

注意:在應用程序關閉或套接字關閉時,會在運行Android應用程序的服務器端讀取數據。

如果需要更多數據,告訴我。

編輯:

1.Android應用在平板電腦和Qt PC應用程序運行。兩者都在同一個網絡(Intranet)上運行。在一個程序中創建Qtcpscoket

3.Created ServerSocket上機器人應用,並在socket>connectToHost(server_ip,portNo,QIODevice::ReadWrite); Qt的應用 onConnected方法是called.subsequently socket->write("Init Connection \n");在Android應用被讀出。

+1

請多顯示一下,比如你如何創建套接字?它是什麼樣的插座?如果TCP套接字,你如何接受新的連接?你如何收到數據?你怎麼知道'寫'成功了?也許錯誤不在PC C++程序中,而是在Android程序中? – 2014-10-16 10:13:48

+0

@joachim:請參閱我的編輯。 – 2014-10-16 10:24:07

+0

@JoachimPileborg:我認爲Android端沒有問題,因爲同一個應用程序從Android客戶端套接字接收數據。 – 2014-10-16 10:26:49

回答

0

我不能留下評論,所以我會寫在這裏。您可以使用QIODevice函數bool QIODevice::waitForBytesWritten(int msecs) [virtual]而不是。如果您的PC應用程序停止,那麼問題在於第二次寫入您的數據。或者您可以檢查功能flush()返回的值。

相關問題