问题标签 [qtcpsocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - 如何正确确定 QTCPSocket 中的输入结束?
我有以下从 QTCPSocket 读取的代码:
这段代码的问题在于它读取了所有输入,然后在最后暂停了 30 秒。(这是默认超时。)
什么是避免长时间超时并检测到输入已经到达末尾的正确方法?(避免信号的答案是首选,因为这应该在线程中同步发生。)
xml - 使用 Qt 通过 TCP 套接字部分发送 xml 消息
我们正在编写一个项目,其中有一个客户端生成 xml 请求,将它们发送到服务器,服务器解析请求并以 xml 字符串返回请求的信息。
当 xml 回复很小时,应用程序可以正常工作,但是当它们超过大约 2500 个字符时,它们有时会在客户端被截断。我有时会说,因为当客户端和服务器在同一台机器上运行并通过家庭地址 127.0.0.1 进行通信时,回复被解析得很好。但是,当客户端和服务器在不同的机器上并通过局域网进行通信时,客户端会将消息削减到大约 2500 个字符。
通信由 tcp 套接字完成。我们正在使用 Qt,客户端有一个 qTCPsocket,服务器有一个 qTCPserver 和一个指向 qtcpsocket 的指针。
我们认为解决我们的问题的一个可能的解决方案是发送 xml,按字符数或标签分隔。虽然我们很容易将消息分成几部分,但发送这些部分并让客户端或服务器读取并将这些部分编译成一个 xml 请求会给我们带来麻烦。
例如,我们想测试让客户端分多个部分发送请求。
这是我们发送请求的客户端函数调用。xmlReq 在 else where 生成并传入。作为将消息分成几部分的示例,我们从 xml 请求中去掉结束标记,然后稍后将其作为另一部分发送。
接下来是我们的服务器代码。它是这样写的,它应该从客户端读取消息,直到它看到 xml 关闭消息标记,然后处理数据并将回复发送回客户端。
这是启动服务器的代码。
当它获得一个新连接时,它会调用 acceptConnection 插槽,如下所示
startRead 看起来像这样:
在我看来,开始读取的编码方式是,只要客户端写入消息,服务器就会读取它并将其附加到服务器存储的 xmlRequest 中。如果消息包含 xml 结束标记,则它处理请求。
但发生的情况是,如果客户端连续写入,服务器不会全部读取它们,只会读取第一个,并且永远不会收到 xml 结束标记,因此不处理任何请求。
我需要回答的问题是为什么服务器不响应客户端多次写入?我应该怎么做才能发送一个 xml 字符串,分成几部分,让服务器读取所有部分并再次将其转换为一个字符串?
qt - 将 QLocalSocket* 传递给需要 QIODevice* 的方法
也许我过于雄心勃勃,但我正在尝试编写一个服务器程序,它可以接受 QLocalSockets 和 QTcpSockets 上的连接。这个概念是有一个“nexus”对象,同时有一个 QLocalServer 和 QTcpServer 监听新连接:
...然后分开建立服务器对象的插槽,其构造函数采用指向 QIODevice 的指针。理论上,这应该可以工作,因为 QLocalSocket 和 QTcpSocket 都继承了 QIODevice。这是 newLocalConnection 插槽,例如:
问题是这不会编译,给出一个错误:
错误 C2664:“CalculationServer::CalculationServer(QIODevice *,QObject *)”:无法将参数 1 从“QLocalSocket *”转换为“QIODevice *”1> 指向的类型不相关;转换需要 reinterpret_cast、C-style cast 或 function-style cast
现在指向的类型显然不是无关的,在我的代码的其他地方,我对以下操作完全没有问题:
...所以谁能告诉我为什么编译器有这个问题?有没有办法让构造函数接受 QLocalServer*?我想有一个核选项让构造函数接受一个 void 指针和一个额外的变量来告诉它它正在发送什么,因此它可以将 void 指针重新转换为 QLocalSocket 或 QTcpSocket,但我觉得诉诸 reinterpret_cast 感到不舒服看起来它应该是一个简单的 C++ 多态性。
问候,
斯蒂芬。
qt - Behavior of QTcpSocket::waitForBytesWritten?
I'm a little confused on the behavior of QTcpSocket::waitForBytesWritten()
...
Until when does this function block?
- Until the data is written to the OS's internal buffer for transmission over TCP?
- Until the data is physically converted to TCP packets and sent?
- Until the entire data is transmitted and the remote client acknowledges that all packets have been received?
I looked at the documentation, but it didn't seem to be very clear.
c++ - QTcpServer:向连接的客户端发送 HTTP/1.0 200 OK
我设置了一个 QTcpServer 来监听 Shoutcast 流。newConnection() 信号被触发,因为它应该:
如何发送 HTTP 200 ?
c++ - QTcpSocket 监听
是否可以在 QTcpSocket 上监听?我在 Tcp 上有一个简单的 p2p 连接。但我找不到在随机空闲端口上启动 QTcpSocket 的方法。我应该为它使用 QTcpServer,还是只对 1 个连接有点过分?
qt - QTcpSocket 和发送二进制数据的问题
有以下代码:
在服务器上,我只收到 .bmp 文件的标题。什么可能导致这种行为?以及如何解决这个问题?
qt - QTcpSocket 问题
使用 Qt 编写聊天。有问题。我客户端的 QTcpSocket 仍然处于连接状态,但服务器发出 newConnection() 信号。不需要网络会话。这是为什么?这是一些代码:
requestForID() 永远不会被执行
服务器显示传入连接,客户端不发出连接保持在连接状态,也没有收到服务器消息......有什么想法吗?
qt - QTcpServer - QTcpSocket 确认问题
-->我正在使用QTcpSocket,QTcpServer编写程序。我是否需要添加一些代码(即确认程序)来保证数据包被传递?
如果是这种情况,我在网上找不到类似的东西,因此想看看一些例子,拜托。
--> 或者在某个地方的 QT 库中,这些已经被覆盖,所以我不需要这样的东西?
任何帮助将不胜感激。谢谢。
编辑:现在,我在问如何将标题与我在下面添加的 QDataStream 块一起使用。我希望每个块都有标题来告诉信息。这样我就可以跟踪写了哪些部分,哪些部分丢失了。请看下面。
qt - 如何通过 QTcpSocket 发送整数?
我是 Qt 的新手,所以如果这是一个完全愚蠢的问题......
我正在尝试使用 QTcpSocket。
如果我做:
它抱怨 write() 不适用于整数(不是 const char *)。
如果我做:
另一方将其视为整数 49(ASCII 表示 1)。
在类似但不同的问题上,是否可以通过 QTcpSocket 发送结构或联合?
====================================================
编辑:
服务器已经接受整数,并且期待一个整数 - 我无法控制它。