草庐IT

qtcpsocket

全部标签

c++ - 最简单的 QT TCP 客户端

我想连接到一个监听服务器并传输一些数据。我查看了可用的示例,但它们似乎具有对我来说似乎没有多大帮助的额外功能(即连接、fortune等)。这是我到目前为止的代码:QTcpSockett;t.connectToHost("127.0.0.1",9000);假设服务器正在监听且健壮,我需要实现什么来发送数据类型为QByteArray的数据变量? 最佳答案 使用QTcpSocket非常简单。像你一样开始......voidMainWindow::connectTcp(){QByteArraydata;//connectToHost("12

c++ - 最简单的 QT TCP 客户端

我想连接到一个监听服务器并传输一些数据。我查看了可用的示例,但它们似乎具有对我来说似乎没有多大帮助的额外功能(即连接、fortune等)。这是我到目前为止的代码:QTcpSockett;t.connectToHost("127.0.0.1",9000);假设服务器正在监听且健壮,我需要实现什么来发送数据类型为QByteArray的数据变量? 最佳答案 使用QTcpSocket非常简单。像你一样开始......voidMainWindow::connectTcp(){QByteArraydata;//connectToHost("12

android - QTcpSocket 的生命周期

我目前正在开发一个通过TCP连接到服务器的Android应用程序。服务器是用Qt编写的,在计算机上运行。在服务器端,我使用QTcpServer和信号QTcpServer::newConnection()来获取新连接的QTcpSocketQTcpServer::nextPendingConnection()。我实现了一个名为SocketManager的类,它管理此套接字接收的数据。在Android端,我使用javaSocket连接到服务器。一切都很好。当Android端与服务器断开连接时,我的SocketManager对象会收到通知并自行销毁。但我想妥善处理Android设备离线或关闭等

c++ - QTcpSocket : reading and writing

我知道可能已经有人问过一些类似的问题,但我发现的这些问题的答案涵盖了非常具体的问题,我仍然没有弄清楚。在我的程序中,我正在创建一个QObject(称为QPeer),它使用QTcpSocket通过网络与另一个此类对象进行通信。QPeer有一个插槽,可以接受带有数据的QByteArray(sendData(QByteArray))。该数组的全部内容被视为一条“消息”,并将它们写入套接字。我想执行以下操作:每次写入消息时,我都希望接收QPeer恰好发出一次信号dataReceived(QByteArray),该QByteArray包含整个消息。(注意:所有信号/槽,包括连接QPeer及其套接

c++ - 当调用 QTcpSocket::close() 时会发生什么?

QTcpSocket::close()被调用时会发生什么?我知道它最终会关闭连接,但是Tcp套接字的内部缓冲区会发生什么?清零了吗?这就是当我调用close()时QTcpSocket::size()返回0的原因吗?从服务器接收数据后从客户端:qDebug()编辑:根据这个post,关闭套接字会自动刷新所有剩余数据。由于我在客户端从服务器接收到数据后关闭套接字,数据会刷新到哪里?我还没有读过任何数据。 最佳答案 当关闭被调用时,Qt将QAbstractSocket状态更改为ClosingState。如果有数据还没有写入socket,现

C++/Qt : QTcpSocket won't write after reading

我正在创建一个网络客户端应用程序,它使用QTcpSocket向服务器发送请求并期望得到回应。不涉及更高级别的协议(protocol)(HTTP等),它们只是交换一些简单的自定义字符串。为了测试,我用Python创建了一个TCP服务器,它监听套接字并记录它接收到的字符串和发回的字符串。我可以发送第一个请求并获得预期的响应。但是,当我发送第二个请求时,它似乎没有写入网络。我已将调试槽附加到QTcpSocket的通知信号,例如bytesWritten(...),connected(),error(),stateChanged(...)等等,我看到正在建立的连接、发送的第一个请求、处理的第一个

c++ - QTcpSocket 和 TCP 填充

美好的一天。我正在发送一个自定义协议(protocol)以通过TCP进行日志记录,如下所示:Timestamp(uint32_t->4bytes)Lengthofmessage(uint8_t->1byte)Message(char->Lengthofmessage)时间戳被转换为BigEndian用于传输并且一切正常,除了一个小细节:填充时间戳是自己发送的,但是我的应用程序(在Ubuntu下使用BSD套接字)不是只发送时间戳(4字节),而是自动向消息附加两个字节的填充。Wireshark正确识别了这一点并将两个无关的字节标记为填充,但是QTcpSocket(Qt5.8、mingw5.

c++ - QTcpSocket/QTcpServer内存管理/服务器崩溃

我正在设计和制作一个服务器,它应该能够处理每秒大约100次以上的点击。我从服务器获取的信息只是HTTPheader。根据header中的信息,它将查询数据库(不同线程)以获取一些信息,并将最终信息发送回QTcpServer,QTcpServer创建输出字符串,并发回HTTP响应。我遇到了一个无法调试的大问题。我的代码看起来与此类似:TCPInterface::TCPInterface(QObject*parent):QTcpServer(parent){//startlisteningfortcptrafficonport80listen(QHostAddress::Any,80);c

c++ - Qt:使用 QTcpSocket -> 我可以在套接字上写,但我不能读......

我在xUbuntu14.04上使用Qt4.8GCC32位。我有以下代码,一个TCP服务器,我使用它来获取一些远程命令并发回一些答案-通过TCP套接字:struct_MyRequest{unsignedlongRequest;unsignedlongData;}__attribute__((packed));struct_MyAnswer{unsignedlongError;unsignedlongFiller;}__attribute__((packed));_MyRequestrequest;_MyAnsweranswer;RemoteCmdServer::RemoteCmdServ

c++ - QTcpSocket : Setting LowDelayOption seems to have no effect?

我有一个QtGUI应用程序,它使用QTcpSocket向服务器发送和从服务器接收TCP数据包。到目前为止,我已经成功建立了TCP套接字连接(有2个单独的套接字连接,因为有2个不同的消息集。两者的IP地址相同,但有2个不同的端口号)以及发​​送和接收数据包。我的应用程序发送的大部分消息都是通过GUI主窗口上的按钮启动的(一条消息使用QTimer定期发送,每1667毫秒过期一次)。服务器有一个FIFO(深度为128条消息)并向我的应用程序发送一条特定消息,该消息在FIFO1/2满、3/4满和满时进行通信。仅通过按下GUI上的发送按钮来测试此功能是乏味的,因此我想到了加载一个.csv文件,该