QTWebsocket / jwebsocket大数据问题
QtWebsocket / JWebsocket large data issue
我正在使用qtwebsocket服务器的C 应用程序,而在Android应用程序上使用了jwebsocket客户端。
当我发送一个大字符串(PNG文件为64个字符串)时,我只会收到1400个字符,您是否知道为什么?
也许我错过了一些东西,我读到我可以发送大数据,因为Websocket实施内部将它们分开。所以也许我错过了客户中的东西。
服务器端:
void WebSocketServer::sendImage(cv::Mat image)
{
QtWebsocket::QWsSocket* client;
uchar* datas = image.data;
std::cout << image.cols * image.rows << std::endl;
std::cout << "coucou" << std::endl;
QString dataString;
for (int i = 0; i < (image.cols * image.rows ) - 2 ; i++)
{
dataString += datas[i];
}
qDebug() << dataString;
std::cout << "Sending an image" << std::endl;
cv::Mat dst;
cv::cvtColor(image, dst, CV_BGR2RGB);
QImage imageAsQImage((uchar*)dst.data, dst.cols, dst.rows, QImage::Format_RGB32);
QString encodedImage = encodeToBase64(imageAsQImage);
foreach(client, clients)
{
client->write(encodedImage);
//client->write(dataString);
}
}
客户端:
public class WebSocketClient extends AsyncTask<String, Integer, Long> implements WebSocketClientTokenListener{
private BaseTokenClient btc;
public WebSocketClient() {
System.out.println("Creating a new websocket client");
btc = new BaseTokenClient();
btc.addListener(this);
btc.addListener(new RpcListener());
Rpc.setDefaultBaseTokenClient(btc);
Rrpc.setDefaultBaseTokenClient(btc);
}
...
@Override
public void processPacket(WebSocketClientEvent arg0, WebSocketPacket arg1) {
if(arg0.getClient().getNegotiatedEncoding() == WebSocketEncoding.TEXT)
{
// here is only the first 1400 chars...
String response = arg1.getASCII();
}
}
谢谢!
您正在阅读不是完整消息的数据包。正如您提到的那样,WebSocket将数据流拆分为较小的数据包(帧)。
正如@kurt Pattyn所说,我正在阅读一个数据包,这不是完整的消息。我要求安托万·拉法格(Qtwebsocket创始人),他确认问题在客户端(jwebsocket)。
我如何解决它:我没有发现有关使用Jwebsocket读取帧的明确信息,因此我将LIB更改为此:https://github.com/koush/android-websockets
现在,我正确地将完整图像作为64编码字符串
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- HDF5Cpp 扩展复合数据集超板问题
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 我对数据结构、双向链表有一些问题
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- Java 客户端C++服务器数据发送/接收问题
- printf 数据类型说明符复杂问题
- 从文件导入数据时遇到问题.我有一个没完没了的循环
- 对于这个问题,是否有更好的数据结构和算法选择
- 使用SSE内部函数复制少量数据时出现问题
- 面临在 if 语句之外打印变量数据的问题 完成使用 Qt 编程
- 面对迭代矢量<矢量<string>>和打印数据的问题
- C++中从客户端到服务器的数据传输问题
- 将此类数据作为字符串进行比较时出现问题
- 线程清理器检测到数据争用,问题出在哪里?
- 二叉搜索树插入数据问题
- 最近点对O(nlogn)算法——c++实现中的一些数据问题
- QTWebsocket / jwebsocket大数据问题
- Qt 5.5 QOpenGLTexture复制数据问题