Ⅰ qt的tcp通信 伺服器和客戶端讀寫數據的問題
首先回答第一個問題,讀和寫可以有多種實現方式,用write和read只是其中一種,前面一個函數中的 clientConnection->write(block)是調用了QTcpSocket 類中的write方法來實現,如果你想不用此方法調用類中的read和write方法,就是你問的第二個問題,in和out的作用,in和out在這里將對socket中的報文收發變為數據流的形式來操作,QDataStream in(tcpSocket)比如這一句是將tcpSocket這個連接的實例對象作為一個文件描述符傳遞給QDataStream,然後 in >> blockSize這句話實現的就是相當於read的操作,就是將數據流讀出來。這個 out << (quint16)(block.size() - sizeof(quint16))是寫入。實際上對諸如串口收發,讀寫文件,socket通信等等,用C語言來寫,抽象出來都是對文件描述符進行操作,都可以用write和read來做,所以,實際上,第一種方法和第二種方法是一樣的,就看你選擇什麼樣的方法了,第三個問題可參考out << (quint16)(block.size() - sizeof(quint16))這樣的方法在收到數據以後把數據發出去。
請給分。。。
Ⅱ 我在Qt里寫一個向串口寫數據的程序,但是提示QIODevice::write: device not open,不知道怎麼解決!
是伺服器的埠沒有打開。
1、首先pro文件配置:Qt網路功能需要在pro文件增加網路庫。
注意事項:
int main()
{
Py_Initialize(); // 初始化// 將Python工作路徑切換到待調用模塊所在目錄,一定要保證路徑名的正確性string chdir_cmd = string("sys.path.append('/xxxxxxx/')");
// 載入模塊PyObject* moleName = PyString_FromString("xx"); //模塊名,不是文件名PyObject* pMole = PyImport_Import(moleName);
// 載入函數PyObject* pv = PyObject_GetAttrString(pMole, "xxx");// 調用函數PyObject* pRet = PyObject_CallObject(pv, xxx);