qtcsocket/qtcserver传输,如何使用QdataStream传输表数据??你知道吗
有一些想法:在每一行上写数据流,然后调用Write(),但是如何再写一次呢?你知道吗
存在问题:数据乱码,第一行数据重复写入。。你知道吗
从fh文件中提取保存的数据流数据,写入自动闭塞用于TCP传输 (数据以表格每行的格式保存,读取行数和列表数据)—>;无法正确显示 寻找例子或想法,用PYQT5写
服务器代码:
self.block = QByteArray()
fh = QFile(name)
fh.open(QIODevice.ReadOnly)
tableData = QDataStream(fh) # Get Data from File
tableData.setVersion(QDataStream.Qt_5_6)
stream = QDataStream(self.block, QIODevice.WriteOnly) # Input data to socket
stream.setVersion(QDataStream.Qt_5_6)
self.clientConnection = self.server.nextPendingConnection()
while not tableData.atEnd():
num,table=0,''
num = tableData.readUInt16()
table = tableData.readQStringList()
stream.writeUInt16(0)
stream.writeUInt16(num)
stream.writeQStringList(table)
stream.device().seek(0)
stream.writeUInt16(self.block.size() - SIZEOF_INT16) #
self.clientConnection.write(self.block)
self.clientConnection.flush()
你知道吗客户端.py你知道吗
def readMessage(self):
try:
print('readmessage')
stream = QDataStream(self.socket)
stream.setVersion(QDataStream.Qt_5_6)
while not stream.atEnd():
if self.blockSize == 0:
if self.socket.bytesAvailable()<SIZEOF_UINT16:
return
self.blockSize = stream.readUInt16()
if self.socket.bytesAvailable()<self.blockSize:
return
num=stream.readUInt16()
message = stream.readQStringList() #?????????
print(num,message)
if num<1:
self.tableWidget.setRowCount(1) # First row Data
for a in range(0, 11):
# print(a)
newItem = QTableWidgetItem(message[a])
self.tableWidget.setItem(0, a, newItem)
else:
self.tableWidget.insertRow(0)
for a in range(0, 11):
newItem = QTableWidgetItem(message[a])
self.tableWidget.setItem(0, a, newItem)
print('closee')
self.socket.disconnect()
self.socket.close()
except:
self.socket.close()
输入数据:
错误输出数据:
目前没有回答
相关问题 更多 >
编程相关推荐